随笔分类 -  leetcode

摘要:看了一下大佬总结的关于背包问题,如醍醐灌顶 作者:Jackie1995链接:https://leetcode-cn.com/problems/combination-sum-iv/solution/xi-wang-yong-yi-chong-gui-lu-gao-ding-bei-bao-wen-/ 阅读全文
posted @ 2021-04-24 10:30 鼬神无悔 阅读(52) 评论(0) 推荐(0)
摘要:写在前面:前几天看了一个非常优雅的代码,可是我找不到原作者了,所以我凭着记忆将方法运用到这个题目上 我的思路:遍历一次数组,如果 i 的值等于val,则跳过这个值继续遍历,当i 的值不等于val的值时,将x赋值给nums[ count ] ,count从0开始计数,没执行一次加1.,最后返回coun 阅读全文
posted @ 2021-04-19 10:01 鼬神无悔 阅读(40) 评论(0) 推荐(0)
摘要:前言:这道题以前用c做过,当时为了考研复试,拼命的刷算法题,现在再次碰到这个题,心里五味陈杂,既然以前使用c写的,那这次就换java吧 我的思路:上图中的数组【0,0,1,1,1,2,2,3,3,4】,res为返回数组的长度,初始值为0,i为数组下标,i从1开始遍历,如果下标为i的值等于下标为res 阅读全文
posted @ 2021-04-18 12:38 鼬神无悔 阅读(85) 评论(0) 推荐(0)
摘要:官方思路 1、桶排序: 桶的大小为t+1,如果两个元素在同一个桶中,那么这一对元素就是符合条件的元素,返回true,否则检查相邻桶中是否有符合条件的元素 依次遍历数组中的元素,如果元素遍历到索引大于k的地方,则将第i-k个桶中的元素删掉,因为他们不符合两个元素的索引小于等于k的条件。 阅读全文
posted @ 2021-04-18 12:20 鼬神无悔 阅读(32) 评论(0) 推荐(0)
摘要:我的思路:既然是旋转数组,那么有两种情况: 1、旋转数组旋转到初始状态,则第一个元素的值最小; 2、数组有两段,两段都是递增的,那么记录两段递增的首元素比较大小,返回最小的即可。 官方题解: 1、排序问题经典的二分法: 时间复杂度为O(log n),空间复杂度为O(1); 官方题解比较我的解法更加精 阅读全文
posted @ 2021-04-08 16:46 鼬神无悔 阅读(61) 评论(0) 推荐(0)
摘要:我的思路:对数组进行遍历,当nums【i】<target && nums【i+1】>target时,该数组没有target值,反之,当nums【i】等于target时,返回true 阅读全文
posted @ 2021-04-07 21:34 鼬神无悔 阅读(34) 评论(0) 推荐(0)
摘要:大佬题解:动态规划(妈妈以后再也不怕我遇见动态规划了) 看过大佬的题解之后,感觉动态规划没有那么可怕了 动态规划常规步骤: 单个数组或者字符串要用动态规划时,可以把动态规划 dp[i] 定义为 nums[0:i] 中想要求的结果;当两个数组或者字符串要用动态规划时,可以把动态规划定义成两维的 dp[ 阅读全文
posted @ 2021-04-03 11:53 鼬神无悔 阅读(73) 评论(0) 推荐(0)
摘要:我的笨思路:遍历行首,目标值大于本行首值小于下一行首值时,遍历列,找到目标值返回true,如果前n-1行没找到,遍历最后一行,找到目标值返回true。 官方思路:二分查找法 class Solution { public boolean searchMatrix(int[][] matrix, in 阅读全文
posted @ 2021-03-30 10:50 鼬神无悔 阅读(75) 评论(0) 推荐(0)
摘要:我的思路:32位,循环32次,从地位到高位枚举。 uint32_t reverseBits(uint32_t n) { uint32_t mask = 1; uint32_t res = 0; for(int i=0;i<32;i++) { if((n & mask) != 0) { res <<= 阅读全文
posted @ 2021-03-29 13:05 鼬神无悔 阅读(73) 评论(0) 推荐(0)
摘要:思路:遍历一次字符串,当遍历到字符为数字时,计算数值(number = number*10 + (word.charAt(i)-'0');),知道遍历到字符不为数字,将数值加入hash集合。遍历到字符不为数字时,继续遍历。 阅读全文
posted @ 2021-03-28 16:08 鼬神无悔 阅读(84) 评论(0) 推荐(0)
摘要:我的方法:递归(说实话,有点笨) 思路:将移动次数k值对链表长度取余,避免重复旋转,每次旋转一个节点 官方题解:闭合为环 思路: 两次循环,第一次循环计算链表长度,并找到尾结点,将需要旋转的k值对长度取余,避免重复旋转,第二次从尾结点出循环,每次向后循环一个节点,循环次数为length-k%leng 阅读全文
posted @ 2021-03-27 14:31 鼬神无悔 阅读(44) 评论(0) 推荐(0)
摘要:存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 思路:设置一个标记,记录当前节点的值,假如链表A->B->C->NULL,记录A的值为flag,如果B的值等于flag,则断开A、B之间的连接,A->next = A->next->nex 阅读全文
posted @ 2021-03-26 08:22 鼬神无悔 阅读(29) 评论(0) 推荐(0)