第一题

leetcode37:解数独

public class 第一题08 {public void solveSudoku(char[][] board) {boolean[][] row = new boolean[10][10];boolean[][] col = new boolean[10][10];boolean[][] box = new boolean[10][10];initBoard(board,row,col,box);process(board,row,col,box,0,0);}private boolean process(char[][] board, boolean[][] row, boolean[][] col, boolean[][] box, int i, int j) {if (i == 9){return true;}int nexti = j == 8 ? i + 1 : i;int nextj = j == 8 ? j + 1 : 0;if (board[i][j] == '.') {int b = 3 * (i / 3) + j / 3;for (int k = 1; k < 10; k++) {if (!row[i][k] && !col[j][k] && !box[b][k]) {row[i][k] = true;col[j][k] = true;box[b][k] = true;board[i][j] = (char)(k + '0');if (process(board, row, col, box, nexti, nextj)) {return true;}row[i][k] = false;col[j][k] = false;box[b][k] = false;board[i][j] = '.';}}return false;}else {return process(board,row,col,box,nexti,nextj);}}private void initBoard(char[][] board, boolean[][] row, boolean[][] col, boolean[][] box) {for (int i = 0;i < 9;i++){for (int j = 0;j < 9;j++){if (board[i][j] != '.'){int num = board[i][j] - '0';int b = 3 * (i / 3) + j / 3;row[i][num] = true;col[j][num] = true;box[b][num] = true;}}}}
}

第二题

三个有序数组中,|X-Y| + |Y - Z| + |Z - X|最小的值


public class 第二题08 {public static void main(String[] args) {int[][] matrix = {{1,4,7},{2,5,9},{1,8,10}};int[] res = minRange(matrix);System.out.println(res);}public static int[] minRange(int[][] matrix){for (int[] arr : matrix){if (matrix == null || matrix.length < 1){return null;}}TreeSet<Node> treeSet = new TreeSet<>(new Comparator<Node>() {@Overridepublic int compare(Node o1, Node o2) {int res = ((o1.num - o2.num) == 0) ? (o1.toString().compareTo(o2.toString())) : (o1.num - o2.num);return res;}});int n = matrix.length;for (int i = 0;i < n;i++){treeSet.add(new Node(matrix[i][0],i,0));}int[] ans = new int[2];int mineln = Integer.MAX_VALUE;while (treeSet.size() == n){if (mineln > treeSet.last().num - treeSet.first().num + 1){mineln = treeSet.last().num - treeSet.first().num + 1;ans[0] = treeSet.first().num;ans[1] = treeSet.last().num;}Node poll = treeSet.pollFirst();if (poll.ownIndex < matrix[poll.arrIndex].length - 1){poll.ownIndex++;treeSet.add(new Node(matrix[poll.arrIndex][poll.ownIndex],poll.arrIndex, poll.ownIndex));}}return ans;}static class Node{public int num;public int arrIndex;public int ownIndex;public Node(int num,int arrIndex,int ownIndex){this.num = num;this.arrIndex = arrIndex;this.ownIndex = ownIndex;}}
}

第三题

leetcode781:森林中的兔子
思路:贪心

public class 第三题08 {public static void main(String[] args) {int[] answers = {1,1,2};int res = numRabbits(answers);System.out.println(res);}public static int numRabbits(int[] answers) {Arrays.sort(answers);int ans = 0;int cand = answers[0];int count = 0;for (int num : answers){if (num != cand){ans += ((count + cand) / (cand + 1)) * (cand + 1);cand = num;count = 1;}else {count++;}}return ans + ((count + cand) / (cand + 1)) * (cand + 1);}
}

第四题

leetcode50:Pow(x,n)
思路:快速幂

public class 第四题08 {public static void main(String[] args) {int res = pow(5, 7);double pow = Math.pow(5, 7);double myres = myPow(2,3);System.out.println(res + " " + pow);}public static int pow(int x,int n){int ans = 1;int cur = x;while (n != 0){if ((n & 1) == 1){ans *= cur;}cur *= cur;n >>= 1;}return ans;}public static double myPow(double x, int n) {double ans = 1;long newn = n;if (n < 0){x = 1.0 / x;newn = -newn;}while (newn != 0) {if ((newn & 1) == 1){ans *= x;}x *= x;newn >>= 1;}return ans;}
}

第五题

leetcode69: x 的平方根
思路:二分

public class 第五题08 {public static int mySqrt(int x) {if (x == 0){return 0;}if (x < 3){return 1;}long l = 1;long r = x;long ans = 0;while (l <= r){long mid = (l + r) / 2;if (mid * mid == x){return (int)mid;}else if (mid * mid < x){ans = mid;l = mid + 1;}else {r = mid - 1;}}return (int)ans;}
}

第六题

leetcode73:矩阵置零

public class 第六题08 {//空间复杂度为O(1)public static void setZeroes(int[][] matrix) {int n = matrix.length;int m = matrix[0].length;boolean first_row = false;boolean first_col = false;for (int i = 0;i < n;i++){if (matrix[i][0] == 0){first_col = true;break;}}for (int i = 0;i < m;i++){if (matrix[0][i] == 0){first_row = true;break;}}for (int i = 1;i < n;i++){for (int j = 1;j < m;j++){if (matrix[i][j] == 0){matrix[i][0] = 0;matrix[0][j] = 0;}}}for (int i = 1;i < n;i++){for (int j = 1;j < m;j++){if (matrix[i][0] == 0 || matrix[0][j] == 0){matrix[i][j] = 0;}}}if (first_row){for (int i = 0;i < m;i++){matrix[0][i] = 0;}}if (first_col){for (int i = 0;i < n;i++){matrix[i][0] = 0;}}}
}

第七题

leetcode152:乘积最大子数组
思路:动态规划——》动态规划空间优化O(1)

public class 第七题08 {//动态规划public int maxProduct1(int[] nums) {if (nums == null || nums.length < 1){return -1;}int n = nums.length;int[] dpmax = new int[n];int[] dpmin = new int[n];dpmax[0] = nums[0];dpmin[0] = nums[0];int max = nums[0];for (int i = 1;i < n;i++){int p1 = nums[i];int p2 = nums[i] * dpmax[i - 1];int p3 = nums[i] * dpmin[i - 1];dpmax[i] = Math.max(p1,Math.max(p2,p3));dpmin[i] = Math.min(p1,Math.min(p2,p3));max = Math.max(max,dpmax[i]);}return max;}//对动态规划进行空间优化——》O(1)public int maxProduct(int[] nums) {if (nums == null || nums.length < 1){return -1;}int n = nums.length;int dpmax = nums[0];int dpmin = nums[0];int max = nums[0];for (int i = 1;i < n;i++){int p1 = nums[i];int p2 = nums[i] * dpmax;int p3 = nums[i] * dpmin;dpmax = Math.max(p1,Math.max(p2,p3));dpmin = Math.min(p1,Math.min(p2,p3));max = Math.max(max,dpmax);}return max;}
}

第八题

leetcode172:阶乘后的零

public class 第八题08 {public static int trailingZeroes(int n) {int ans = 0;while (n != 0){ans += n / 5;n = n / 5;}return ans;}
}

第九题

leetcode190. 颠倒二进制位

public class 第九题08 {public static int reverseBits(int n) {n = (n >>> 16) | (n << 16);n = ((n & 0xff00ff00) >>> 8) | ((n & 0x00ff00ff) << 8);n = ((n & 0xf0f0f0f0) >>> 4) | ((n & 0x0f0f0f0f) << 4);n = ((n & 0xcccccccc) >>> 2) | ((n & 0x33333333) << 2);n = ((n & 0xaaaaaaaa) >>> 1) | ((n & 0x55555555) << 2);return n;}
}

左程云大厂算法刷题班——08相关推荐

  1. 左程云大厂算法刷题班——07

    第一题 leetcode42:接雨水 public class 第一题01 {public static int trap1(int[] height) {int n = height.length; ...

  2. 左程云大厂算法刷题班——05

    第一题 public class 第一题05 {public static void main(String[] args) {int[] res = maxSplitNum("010110 ...

  3. 左程云大厂算法刷题班——14

    第一题 leetcode475:供暖器 public class 第一题14 {public static int findRadius(int[] houses, int[] heaters) {A ...

  4. 左程云大厂算法刷题班——15

    第一题 leetcode499:迷宫2 思路:宽度优先遍历 public class 第一题15 {public static void main(String[] args) {int[][] ma ...

  5. 左程云大厂算法刷题班——12

    第一题 leetcode296. 最佳的碰头地点 public class 第一题12 {public static void main(String[] args) {int[][] grid = ...

  6. 左程云大厂算法刷题班——13

    第一题 leetcode992. K 个不同整数的子数组 思路:1.滑动窗口(两个) 2.技巧:k = k = (小于等于k) - (小于等于k-1) public class 第一题13 {publ ...

  7. 左程云大厂算法刷题班——10

    第一题 leetcode279. 完全平方数 public class 第一题10 {public static int numSquares(int n) {int[] dp = new int[n ...

  8. 左程云大厂算法刷题班——02

    第一题 思路:滑动窗口(左右两指针) public class 第一题01 {public static void main(String[] args) {int[] arr = {1,3,4,5, ...

  9. 面试算法LeetCode刷题班—BAT面试官带你刷真题、过笔试

    课程名称: <面试算法LeetCode刷题班> --BAT面试官带你刷真题.过笔试 主讲老师: 林老师 BAT资深研发工程师(T7/P8级),致力于搜索引擎及其子系统的研发.迭代与优化,数 ...

最新文章

  1. py3提取json指定内容_python3 取页面指定数据(json)
  2. 应用系统中交互式报表功能解析
  3. 2017.10.8 软件工程----总体设计
  4. 如何把 Word 中的表格快速插入 LaTeX?
  5. python基础——字典
  6. 求生之路 服务器优化参数,《求生之路2》服务器及网络参数优化指南
  7. mysql字段是否存在_Mysql判断表字段或索引是否存在
  8. Antlr中文文档初稿2(《ANTLR树分析器》)
  9. 相机的成像原理: 针孔相机, 胶卷相机 和 数码相机
  10. 机器人抓取中物体3D定位算法介绍
  11. 【PageHelper分页】实现拦截pageNum和pageSize
  12. java 识别图片中的二维码内容识别
  13. Little Gyro and Sort(第二届中国计量大学ACM程序设计竞赛个人赛)
  14. md5验证文件完整性
  15. CTF easycap Banmabanma
  16. CubieBoard2串口
  17. 微信小程序全栈开发实践 第三章 微信小程序开发常用的API介绍及使用 -- 3.9 网络接口简介(九)扩展wxp模块的request3方法,实现用户登录的自动融合
  18. JAVA 按姓氏分类的电话薄(界面、方法的实现和讲解)
  19. microscan说明书_MicroScan WA96微生物分析仪使用评价
  20. 某计算机商店店主考虑未来五年的,《市场调查与预测》练习题

热门文章

  1. WebKitX ActiveX 最新版
  2. ios如何上传文件到服务器,ios通过ftp上传文件到服务器
  3. 正则表达式 语法 分组
  4. 朗科学习期间心得笔记(九)
  5. 113条硬件工程师应用笔记
  6. python随机抽人小程序_python抽人程序初试
  7. Git学习5 GitLab与GitHub操作
  8. Android密码字符为真,Android:仿支付宝交易密码框
  9. 使用python基本函数实现简易的《原神》抽卡系统
  10. springboot整合kafka实现批量消费