从字节平薪跳槽?网友:你就偷着乐吧
最近,我正在网上冲浪时,眼睛一亮,看见一个有意思的帖子:“平薪跳槽,这操作6啊!”看到这,我就来劲了。
事情是这样的,发帖的网友,在字节跳动薪资不高,这次跳槽到了联通。但是后面网友回帖说的是联通的外包岗位,他们给出的薪资区间是12-18k,但网友连15k都没谈到。
然而不明真相的网友们羡慕嫉妒恨了:“从字节平薪跳到联通,你就偷着乐吧。”
又有网友提出了疑问:“联通怎么可能接得住字节的薪资呢?”而且不少人都点头表示赞同。
还有网友调侃:“跟运营商打交道?你得有三宝:能吹、能喝、会来事。你会几样?”还得是网友懂得多啊。
怎么说呢?如果真是正编,这谁不心动啊,但是是外包,而且还压薪资,是挺离谱的。网友的选择相信也是大部分人的选择,怎么可能去干外包,得多想不开啊。
编写一个程序,通过已填充的空格解决数独问题。一个数独的解法需遵循如下规则:
1. 数字 1-9 在每一行只能出现一次。
2. 数字 1-9 在每一列只能出现一次。
3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
4. 空白格用 '.' 表示。
专属福利 👉点击领取:最全Python资料合集
遍历数独:从第一行第一列开始,遍历数独中的每一个空格。
尝试填充:对于每个空格,尝试填充数字 1 到 9。
检查有效性:每次填充后,检查当前填充的数字是否满足数独的规则(即检查行、列及 3x3 宫内是否重复)。
递归填充下一个空格:如果当前填充数字合法,递归地填充下一个空格。如果遍历完所有空格都能合法填充,则找到一个解。
回溯:如果某次填充无法最终解决数独问题,则撤销这次填充(回溯),尝试下一个数字。
Java实现
public class Solution {public void solveSudoku(char[][] board) {solve(board);}private boolean solve(char[][] board) {for (int row = 0; row < board.length; row++) {for (int col = 0; col < board[0].length; col++) {if (board[row][col] == '.') {for (char num = '1'; num <= '9'; num++) {if (isValid(board, row, col, num)) {board[row][col] = num;if (solve(board)) return true;board[row][col] = '.';}}return false;}}}return true;}private boolean isValid(char[][] board, int row, int col, char num) {for (int i = 0; i < 9; i++) {if (board[i][col] == num || board[row][i] == num) return false;if (board[3 * (row / 3) + i / 3][3 * (col / 3) + i % 3] == num) return false;}return true;}}
const solveSudoku = function(board) {const isValid = (row, col, num) => {for (let i = 0; i < 9; i++) {if (board[i][col] === num || board[row][i] === num) return false;if (board[3 * Math.floor(row / 3) + Math.floor(i / 3)][3 * Math.floor(col / 3) + i % 3] === num) return false;}return true;};const solve = () => {for (let row = 0; row < 9; row++) {for (let col = 0; col < 9; col++) {if (board[row][col] === '.') {for (let num = '1'; num <= '9'; num++) {if (isValid(row, col, num)) {board[row][col] = num;if (solve()) return true;board[row][col] = '.';}}return false;}}}return true;};solve();};
package mainfunc solveSudoku(board [][]byte) {solve(board)}func solve(board [][]byte) bool {for row := 0; row < 9; row++ {for col := 0; col < 9; col++ {if board[row][col] == '.' {for num := '1'; num <= '9'; num++ {if isValid(board, row, col, byte(num)) {board[row][col] = byte(num)if solve(board) {return true}board[row][col] = '.'}}return false}}}return true}func isValid(board [][]byte, row int, col int, num byte) bool {for i := 0; i < 9; i++ {if board[i][col] == num || board[row][i] == num {return false}if board[3*(row/3)+i/3][3*(col/3)+i%3] == num {return false}}return true}
算法解析
以一个具体的数独问题为例,我们可以使用上述代码来解决。首先,初始化一个数独板,然后调用 `solveSudoku` 方法。执行后,原地修改数独板,填入解答。
热门推荐