笔记
Milk0nly
这个作者很懒,什么都没留下…
展开
-
LeetCode 丢失的数字
做差法:class Solution { public int missingNumber(int[] nums) { int n = nums.length; int cur = 0, sum = n * (n + 1) / 2; for (int i : nums) cur += i; return sum - cur; }}异或法:class Solution { public int missi.原创 2021-11-21 22:45:02 · 2472 阅读 · 0 评论 -
LeetCode 螺旋矩阵II
class Solution { public int[][] generateMatrix(int n) { int l = 0, r = n - 1, t = 0, b = n - 1; int[][] mat = new int[n][n]; int num = 1, tar = n * n; while(num <= tar){ for(int i = l; i <= r; i++) mat[原创 2021-11-21 22:31:04 · 2009 阅读 · 0 评论 -
LeetCode最后一个单词的长度
题解:从字符串末尾开始向前遍历,其中主要有两种情况第一种情况,以字符串”Hello World“为例,从后向前遍历直到遍历到头或者遇到空格为止,即为最后一个单词”World“的长度。第二种,以字符串”Hello World“为例,需要先将末尾的空格过滤掉,在进行第一种情况的操作。即认为最后一个单词为”World“,长度为5class Solution { public int lengthOfLastWord(String s) { int end = s.length(原创 2021-11-21 22:20:26 · 2585 阅读 · 0 评论 -
LeetCode 字符串相乘
如果num1和num2之一是0,则直接将0作为结果返回即可。如果num1和num2都不是0,则可以通过模拟竖式乘法的方法计算乘机。从右往左遍历乘数,将乘数的每一位与被乘数相乘得到对应的结果,再将每次得到的结果累加。这道题中,被成熟是num1,乘数是num2.需要注意的是num2除了最低位外,其余的每一位的运算结果都需要补0.class Solution { public String multiply(String num1, String num2) { if (num1.e原创 2021-11-21 20:37:33 · 2476 阅读 · 0 评论 -
LeetCode 字符串相加
class Solution { public String addStrings(String num1, String num2) { StringBuilder res = new StringBuilder(""); int i = num1.length() - 1, j = num2.length() - 1, carry = 0; while(i >= 0 || j >= 0){ int n1 = i原创 2021-11-21 20:25:06 · 202 阅读 · 0 评论 -
LeetCode 动态规划解最长回文子串
题目描述:给你一个字符串 s,找到 s 中最长的回文子串。示例:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。解题思路:动态规划,设dp[i][j]为s[i]-s[j]这个字符串是否为回文串,那么显而易见,i==j时,dp[i][j]=truei!=j时:如果子串的长度小于等于2,那么dp[i][j] = (s[i]==s[j])如果子串的长度大于2,那么dp[i][j] = (dp[i+1][j-1])&& (s[i]原创 2021-11-21 16:33:53 · 2449 阅读 · 0 评论 -
LeetCode229 求众数II 摩尔投票算法
题目描述:给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。示例:输入:[3,2,3]输出:[3]题解:摩尔投票算法:摩尔投票算法的核心思想是对拼抵消,首先我们考虑最基本的摩尔投票问题,比如找出一组数字序列中出现次数大于总数1/2的数字,易知若该元素存储,则只会存储一个这样的数。假设这个数是nums[0],初始其票数为1,那么对摩尔投票进行扩展,求大于n/3的所有元素,易知该元素最多有两个,因此我们可以初始化两个element,按和上面一样的流程,最后将出原创 2021-11-16 18:53:24 · 991 阅读 · 0 评论 -
拓扑排序解两道LeetCode题
LeetCode210 课程表II题目描述:现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] = [ai, bi] ,表示在选修课程 ai 前 必须 先选修 bi 。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示:[0,1] 。返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回 任意一种 就可以了。如果不可能完成所有课程,返回原创 2021-11-16 18:23:38 · 101 阅读 · 0 评论 -
基数排序思想及Java实现
原文地址:原理:求出数据中最大数的位数,对从个位到最高位的每一位进行排序,先入桶,再出桶,最后得到的数组就是有序数组。class Demo{ public static void main(String[] args) { //定义整型数组 int[] arr = {21,56,88,195,354,1,35,12,6,7}; //调用基数排序函数 lsd_RadixSort(arr,3); //输出排转载 2021-11-16 18:07:26 · 87 阅读 · 0 评论 -
LeetCode391 完美矩形
问题描述:给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形。这个矩形的左下顶点是 (xi, yi) ,右上顶点是 (ai, bi) 。如果所有矩形一起精确覆盖了某个矩形区域,则返回 true ;否则,返回 false 。示例:输入:rectangles = [[1,1,3,3],[3,1,4,2],[3,2,4,4],[1,3,2,4],[2,3,3,4]]输出:true解释:5 个矩形一起可以精确地覆盖一原创 2021-11-16 09:57:33 · 97 阅读 · 0 评论 -
LeetCode 319 灯泡开关
题目描述:初始时有 n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭一个。第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换一个灯泡的开关。直到第 n 轮,你只需要切换最后一个灯泡的开关。找出并返回 n 轮后有多少个亮着的灯泡。示例:输入:n = 3输出:1 解释:初始时, 灯泡状态 [关闭, 关闭, 关闭].第一轮后, 灯泡状态 [开启, 开启, 开启].第二轮后, 灯泡状态 [开启原创 2021-11-16 09:18:44 · 89 阅读 · 0 评论