
力扣刷题
xc979906570
对代码有洁癖,对架构有执念,对技术有追求
展开
-
762. 二进制表示中质数个计算置位
力扣刷题记录模拟762. 二进制表示中质数个计算置位思路循环遍历范围内的数,统计二进制中含一的个数,判断是否为质数代码class Solution { public boolean isPrime(int x){ // 判断x是否为质数 if(x == 1 || x == 0){ return false; } for(int i=2;i < x;i++){ if(x % i原创 2022-04-05 11:35:13 · 106 阅读 · 0 评论 -
2024. 考试的最大困扰度
力扣刷题记录滑动窗口2024. 考试的最大困扰度思路像这种连续的,我们要想到滑动窗口,通过记录窗口的最大值,固定一个字符在窗口中大小不能大于k,这样分别计算就能得到连续的最大值代码class Solution { public int maxConsecutiveAnswers(String answerKey, int k) { //滑动窗口,我们记录最大值 维护一个大小为k的字符T或者F的窗口 return Math.max(getCnt(answer原创 2022-03-29 11:07:39 · 293 阅读 · 0 评论 -
96. 不同的二叉搜索树 (卡塔兰数)
力扣刷题记录动态规划96. 不同的二叉搜索树思路我们固定一个节点,那么左右子树的分布情况为n-1=n-1 + 0 = n-2 + 1 = … = 1 + n-2 = 0 + n-1。此时递归表达式为f(n) = f(n-1) + f(n-2)f(1) + f(n-3)f(2) + … + f(1)f(n-2) + f(n-1)这就是卡塔兰数,我们通过固定一个节点,来递归找寻它的左子树,右子树有了递归式我们就可以很简单dp了也可以用下面的公式计算代码class Solution {原创 2022-03-29 10:39:03 · 343 阅读 · 0 评论 -
168. Excel表列名称
力扣刷题记录类型名168. Excel表列名称思路特殊的26进制,我们每一位减个一就好了代码class Solution { public String convertToTitle(int columnNumber) { StringBuilder sb = new StringBuilder(); int n = columnNumber; // 就是26进制 相当于每一位都要减一 因为是从1开始 while( n !原创 2022-03-28 12:16:31 · 109 阅读 · 0 评论 -
171. Excel 表列序号
力扣刷题记录模拟171. Excel 表列序号思路这个要注意26进制 是从一开始的代码class Solution { public int titleToNumber(String columnTitle) { int res = 0; int pow = 1; for(int i=columnTitle.length()-1;i>=0;i--){ // 这个加一表示从一开始的26进制嘛原创 2022-03-28 12:12:57 · 93 阅读 · 0 评论 -
343. 整数拆分
力扣刷题记录动态规划343. 整数拆分思路动态规划五步走,dp数组怎样遍历dp数组记录拆分的乘积最大值两层for循环去获得j的拆分代码class Solution { public int integerBreak(int n) { int dp[] = new int[n+1]; //初始化dp数组dp[2] = 1 dp[2] = 1; for(int i=3;i<=n;i++){ fo原创 2022-03-28 12:09:48 · 884 阅读 · 0 评论 -
693. 交替位二进制数
力扣刷题记录模拟 数学693. 交替位二进制数思路这题就是简单模拟每次比较相邻两位,相同就返回false代码class Solution { public boolean hasAlternatingBits(int n) { // 根据除k取余法 // 我们每次对2取余 相邻的两次余数相等就返回false int pre = n % 2; n = n / 2; // 循环对n取余 相除 w原创 2022-03-28 12:05:39 · 94 阅读 · 0 评论 -
538. 把二叉搜索树转换为累加树
力扣刷题记录二叉树538. 把二叉搜索树转换为累加树思路就是二叉树的中序遍历嘛,只是顺序为右中左,左中右求得就是比他小的了代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val原创 2022-03-28 12:01:00 · 328 阅读 · 0 评论 -
2028. 找出缺失的观测数据
力扣刷题记录模拟2028. 找出缺失的观测数据思路求得n个数得和,再平均分给n个数就可以了。代码class Solution { public int[] missingRolls(int[] rolls, int mean, int n) { int m = rolls.length; int sum = 0; for(int i=0;i<m;i++){ sum += rolls[i]; }原创 2022-03-27 11:45:32 · 92 阅读 · 0 评论 -
108. 将有序数组转换为二叉搜索树
力扣刷题记录二叉树108. 将有序数组转换为二叉搜索树思路每一次将有序数组中间的数字拿出来构造节点,然后递归构建左节点和右节点即可。代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this原创 2022-03-27 11:38:20 · 92 阅读 · 0 评论 -
63. 不同路径 II
力扣刷题记录动态规划63. 不同路径 II思路和62不同路径是一样的,每一格的路径数等于它的上面一格和左边一格的路径数之和,唯一区别是当有障碍物时该格子的路径数为0代码class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int m = obstacleGrid.length; int n = obstacleGrid[0].length;原创 2022-03-27 11:32:06 · 89 阅读 · 0 评论 -
160. 相交链表
力扣刷题记录链表160. 相交链表思路我们可以将两个链表的向后对齐,然后从对齐的地方同时开始遍历两个链表,当出现相等的时候,就找到了。也可以两个指针,一起走完所有节点,如果有相交节点,就退出,如果没有相交,最后都会走到两个为空。代码对齐后同时遍历/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(in原创 2022-03-27 11:26:02 · 310 阅读 · 0 评论 -
119. 杨辉三角 II
力扣刷题记录模拟 数学119. 杨辉三角 II思路和杨辉三角一样也可以直接模拟也可以通过组合数公式来直接获得每一行的关系代码直接模拟class Solution { public List<Integer> getRow(int rowIndex) { rowIndex += 1; List<List<Integer>> res = new ArrayList<>(); // 初始化第一原创 2022-03-26 15:31:31 · 2260 阅读 · 0 评论 -
118. 杨辉三角
力扣刷题记录数学模拟118. 杨辉三角思路只需要简单的模拟每个过程就可以了从第三行开始每一行两个一中间的值等于上一行的值两两相加代码class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> res = new ArrayList<>(); // 初始化第一行和第二行原创 2022-03-26 15:11:49 · 354 阅读 · 0 评论 -
62. 不同路径
力扣刷题记录动态规划类型62. 不同路径思路典型的动态规划,我们可以分几步走。1.定义dp数组 确定dp数组含义2.初始化dp数组3.计算4.返回结果这里经过观察可以发现每一格的路径数为上面一格和左边一格的路径数相加dp[m][n] = dp[m-1][n] + dp[m][n-1]代码class Solution { public int uniquePaths(int m, int n) { if(m == 1 || n == 1){原创 2022-03-26 14:29:49 · 1197 阅读 · 0 评论