字节跳动103人因违法违规被辞退。。。

科技   2024-11-10 10:10   上海  

精品推荐

《征服数据结构》专栏:50多种数据结构彻底征服

《经典图论算法》专栏:50多种经典图论算法全部掌握


11月5日,字节跳动公司内部发布了年内第四份《企业纪律与职业道德委员会通报》。《通报》显示,103人因违法违规行为被辞退(含外包及实习生),其中11人因涉嫌构成刑事犯罪,被公安机关立案侦查。


上述涉嫌构成刑事犯罪的11人中,从涉嫌罪名来看,其中1人涉嫌职务侵占罪,5人涉嫌非国家工作人员受贿罪,另有5人未透露具体涉嫌罪名。


这份内部通报中,字节跳动还透露了近期备受关注的实习生破坏模型训练事件。


文件指出,在2024年6月至7月期间,一名前实习生田某某因对团队资源分配不满,通过编写和修改代码恶意破坏了团队的模型训练任务,导致了资源的浪费。字节跳动已终止了与该实习生的实习合同。





--------------下面是今天的算法题--------------


来看下今天的算法题,这题是LeetCode的第64题:最小路径和。


问题描述



来源:LeetCode第64题
难度:中等

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小


说明:每次只能向下或者向右移动一步


示例1:

输入:grid = [[1,3,1],[1,5,1],[4,2,1]]

输出:7

解释:因为路径 1→3→1→1→1 的总和最小。

示例2:

输入:grid = [[1,2,3],[4,5,6]]

输出:12


  • m == grid.length

  • n == grid[i].length

  • 1 <= m, n <= 200

  • 0 <= grid[i][j] <= 200


动态规划解决



这题是让找出一条从左上角到右下角的路径,使得路径上的数字总和最小。这是一道典型的动态规划问题。

我们定义dp[i][j]表示从左上角到位置[i,j]的最小值,因为题中说了每次只能向下或向右移动,所以要想到位置[i,j],可以从上面下来,也可以从左边过来,我们取他的最小值即可,递推公式如下图所示:
对于第一行的每个位置,没法从上面下来,只能从左边过来,同理第一列的每个位置只能从上面下来,所以第一行和第一列要单独处理。

JAVA:
public int minPathSum(int[][] grid) {
    int m = grid.length, n = grid[0].length;
    for (int i = 1; i < m; i++)// 第一列只能从上面下来
        grid[i][0] += grid[i - 1][0];
    for (int i = 1; i < n; i++)// 第一行只能从左边过来
        grid[0][i] += grid[0][i - 1];
    for (int i = 1; i < m; i++)
        for (int j = 1; j < n; j++)// 递推公式
            grid[i][j] = Math.min(grid[i - 1][j], grid[i][j - 1]) + grid[i][j];
    return grid[m - 1][n - 1];
}

C++:
public:
    int minPathSum(vector<vector<int>> &grid) {
        int m = grid.size(), n = grid[0].size();
        for (int i = 1; i < m; i++)// 第一列只能从上面下来
            grid[i][0] += grid[i - 1][0];
        for (int i = 1; i < n; i++)// 第一行只能从左边过来
            grid[0][i] += grid[0][i - 1];
        for (int i = 1; i < m; i++)
            for (int j = 1; j < n; j++)// 递推公式
                grid[i][j] = min(grid[i - 1][j], grid[i][j - 1]) + grid[i][j];
        return grid[m - 1][n - 1];
    }

Python:
def minPathSum(self, grid: List[List[int]]) -> int:
    m, n = len(grid), len(grid[0])
    for i in range(1, m):  # 第一列只能从上面下来
        grid[i][0] += grid[i - 1][0]
    for i in range(1, n):  # 第一行只能从左边过来
        grid[0][i] += grid[0][i - 1]
    for i in range(1, m):
        for j in range(1, n):  # 递推公式
            grid[i][j] = min(grid[i - 1][j], grid[i][j - 1]) + grid[i][j]
    return grid[m - 1][n - 1]

笔者简介
博哥,真名:王一博,毕业十多年,《算法秘籍》作者,专注于数据结构和算法的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解800多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以下载我整理的1000多页的PDF算法文档

《征服数据结构》专栏

《征服数据结构》数组

《征服数据结构》稀疏表(Sparse Table)

《征服数据结构》单向链表

《征服数据结构》双向链表

《征服数据结构》块状链表

《征服数据结构》跳表

《征服数据结构》队列和循环队列

《征服数据结构》双端队列

《征服数据结构》单调队列

《征服数据结构》栈

《征服数据结构》单调栈

《征服数据结构》双端栈

《征服数据结构》散列表

《征服数据结构》堆

《征服数据结构》字典树(Trie树)

《征服数据结构》ArrayMap

《征服数据结构》SparseArray

《征服数据结构》二叉树

《征服数据结构》二叉搜索树(BST)

《征服数据结构》笛卡尔树

《征服数据结构》AVL树

《征服数据结构》树堆(Treap)

《征服数据结构》FHQ-Treap

《征服数据结构》哈夫曼树

《征服数据结构》Splay 树

《征服数据结构》Splay 树(二)

《征服数据结构》滚动数组

《征服数据结构》差分数组

《征服数据结构》并查集(DSU)

《征服数据结构》LRU缓存

《征服数据结构》LFU缓存

……


《经典图论算法》专栏

《经典图论算法》图的介绍

《经典图论算法》图的表示方式

《经典图论算法》邻接矩阵转换

《经典图论算法》广度优先搜索(BFS)

《经典图论算法》深度优先搜索(DFS)

《经典图论算法》A*搜索算法

《经典图论算法》迭代深化深度优先搜索(IDDFS)

《经典图论算法》IDA*算法

《经典图论算法》双向广度优先搜索

《经典图论算法》迪杰斯特拉算法(Dijkstra)

《经典图论算法》贝尔曼-福特算法(Bellman-Ford)

《经典图论算法》SPFA算法

《经典图论算法》弗洛伊德算法(Floyd)

《经典图论算法》卡恩(Kahn)算法

《经典图论算法》基于DFS的拓扑排序

《经典图论算法》约翰逊算法(Johnson)

《经典图论算法》普里姆算法(Prim)

《经典图论算法》克鲁斯卡尔算法(Kruskal)

《经典图论算法》博鲁夫卡算法(Boruvka)

……


数据结构和算法
王一博,《算法秘籍》作者,1000多页的pdf算法题我也已经整理完成,在公众号“数据结构和算法”中回复关键字“pdf”即可下载。
 最新文章