![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
不会街健的bboy不是一个好程序员
这个作者很懒,什么都没留下…
展开
-
【LeetCode】231.2的幂
题目:我的思路:只要能被2整除,那么就除2操作,最后看是否为 1 即可。 public boolean isPowerOfTwo(int n) { if(n == 0) return false; while( n % 2 == 0 ){ n /= 2; } return n == 1; ...原创 2020-01-19 23:45:19 · 57 阅读 · 0 评论 -
【LeetCode】 665.非递减数列
题目:思路,我们只要抽象出改变的条件,并且对改变次数做出统计,只要改变的次数大于 1 ,那么返回false;改变的条件现在有 三个 数字 a,b,c现在已知 a <= b,但是b > c (exp:1,2,0)如果 此时 a为0号下标元素 b为1号下标元素,a > b直接让 a = b即可那么 b ,c 就是一个递减数列了,所以我们需要做出改变,让他变成非递减数列...原创 2020-01-19 23:25:01 · 122 阅读 · 0 评论 -
【LeetCode】169.求众数-多数元素
题目思路我相信在看到统计次数的时候大家可能会想到类似于桶排序的算法,没错,但这个桶,我们需要哈希表去实现,因为我们要求只是统计数组中元素出现的次数。所以我们创建一个哈希表,把Value用来计数当桶,所以我们遍历数组,判断这个元素是否已经是Key了,如果是,那么put(Key,get()+1)此时对这个元素的计数+1;如果不是那么就put(Key,1);我们创建完哈希表之后,我们对哈希...原创 2020-01-18 19:49:24 · 167 阅读 · 0 评论 -
【LeetLode】LCP 2.分式化简
题目:思路:这个我们在纸上自己写一下之后,我们就会发现,实际上就是整数 + 分数的循环,分母的初始值为倒数第一个数,分子初始值为1.从倒数第二个数开始向前,一直到 0 号索引,这里就会不断的重复 整数 + 分数那么我们怎么做呢?在这里我们会有边界的处理:1.如果测试用例的数组小于2,那么就证明只有一个数,直接返回一个分母为1,分子为自己元素的数组即可。2.循环的递进,每一次循...原创 2020-01-17 22:58:33 · 109 阅读 · 0 评论 -
【LeetCode】268.缺失数字
题目:题目很简单,意思就是我有 从 0 到 n 的自然数,但我的序列只有 n-1个长度,找到缺失的那个数字。思路1:排序,找到元素和对应下标不相等的那个就ok了思路2: HashSet集合,我们把元素都存储再HashSet集合中,HashSet集合只能存放Key,Value是HashSet统一提供的Object,我们只需要 contains()从0 到 数组长度的即可,哪一个找不到,也就是...原创 2020-01-17 01:47:36 · 96 阅读 · 0 评论 -
【LeetCode】69. x 的平方根
题目:思路:二分查找法,因为任何一个数的平方根都小于等于自己的一半+1。所以我们使用二分查找法,一直把区间缩小至两位数之后,中位数使用有右中位数。左中位数会陷入死循环。倒数第二次循环时,left 的平方小于或者等于 x ,right的平方比 x 大,最后采用有中位数,使得最后right = left;返回left即可。 public int mySqrt(int x) { ...原创 2020-01-07 00:47:34 · 132 阅读 · 0 评论 -
【LeetCode】67.二进制求和
题目思路:很简单,从后向前遍历,如果位数少的补零,加和,使用 StringBulider进行添加字符,最后判断是否需要进位,如果需要就加‘1’.最后反向输出即可。public static String addBinary(String a, String b) { if(a.length() ==0) return b; if(b.length() ==0...原创 2020-01-06 15:55:00 · 83 阅读 · 0 评论 -
【LeetCode】66.加一
题目:我的思路,从后向前遍历数组,如果最后一位不是9,那么就数组最后位置+1,如果最后位置是9,置为0,并且进入循环判断倒数第二位是不是9。最后如果第一位是9,需要进位,那就直接创建一个新数组,并且第一位置为1即可。代码:for (int i = digits.length -1 ;i >= 0; i--){ digits[i] +=1; ...原创 2020-01-06 00:20:38 · 80 阅读 · 0 评论 -
【LeetCode】53. 最大子序和
题目:这道题触及到了我知识的盲区,动态规划,我没有做出来,看了很多遍题解,稍微理解了一些,搬运一下这个解法吧这道题用动态规划的思路并不难解决,比较难的是后文提出的用分治法求解,但由于其不是最优解法,所以先不列出来动态规划的是首先对数组进行遍历,当前最大连续子序列和为 sum,结果为 ans如果 sum > 0,则说明 sum 对结果有增益效果,则 sum 保留并加上当前遍历数字如...转载 2020-01-03 22:19:04 · 76 阅读 · 0 评论 -
【LeetCode】35. 搜索插入位置
题目:思路,很简单我相信用数组遍历这种最简单的方法谁都会写了。但是排序数组和查找,已经提示我们要使用二分查找来解决问题了。代码如下:解释一下为什么最后要返回left,因为我们在循环中不断对比的是mid下标是不是小于target,也就是说只要是进入循环,mid下标之前的值全部小于target了,如果出了循环还没找到那就证明这个值就在mid的右边,而最后出循换的时候就只剩下所谓的3个数一个是l...原创 2020-01-02 22:31:58 · 75 阅读 · 0 评论 -
【LeetCode】28. 实现 strStr()
题目我的思路属于暴力解法: public int strStr(String haystack, String needle) { if(needle.equals(""))return 0; if(haystack.length() < needle.length()) return -1; int hl = haystack.leng...原创 2020-01-01 22:30:52 · 91 阅读 · 0 评论 -
【LeetCode】27.移除元素
题目:我的思路:这个题和昨天的很像,也就是移除相同元素。这里我同样用到的是四个指针,一个pre,一个last,这两个分别去判断当前位置的元素是否是要移除的元素,如果是,那么就把pre之前的元素向后移动,或者把last之后的元素像前移动。在移动的同时两个记录的指针 start 和 end 向后移动即可.最后的数组长度说就是 end-start+1;我们在把 start 到 end 下标...原创 2019-12-31 18:56:24 · 80 阅读 · 0 评论 -
【LeetCode】26.删除排序数组中的重复项
题目:我的思路:我的思路属于暴力破解,他不让我们使用多余的空间,那么我们就直接定义两个相邻的指针,一个指向前,一个指向后,如果后面的数据和前面的一样,那么就让后面的数据整体前移。我再代码实现时,没有处理好一种特殊情况,【1,1】,这类情况我很难处理。我的代码有纰漏所以这次我发代码了,这里我们来看一下大佬的解法。大佬思路以及解法链接:作者:max-LFszNScOfE首先注意数组是有...原创 2019-12-30 20:22:26 · 101 阅读 · 0 评论 -
【LeetCode】14. 最长公共前缀
题目:我的思路:我们遍历整个数组,以第一个元素的字符串为基准,每一次都对比所有字符串中的第 i 个字符与第一个元素的第i个字符是否相等,如果相等,就把整个字符拼接到结果中,如果不同,直接return即可。public String longestCommonPrefix(String[] strs) { if(strs == null || strs.length<1){ ...原创 2019-12-29 20:13:41 · 74 阅读 · 0 评论 -
【LeetCode】21.合并两个有序链表
题目:这个题目我曾经在单链表的扩展中做过。单链表扩展实现很简单,挨个比对,谁小谁进新链表,指针向后走即可。 public static ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode newhead = new ListNode(0); ListNode temp = newhead;...原创 2019-12-29 19:24:21 · 82 阅读 · 0 评论 -
【LeetCode】20.有效的括号
题目:我的思路:使用栈去实现。如果字符串为""或者字符串长度为奇数,直接返回即可。首先将第一个字符push进去。写一个循环,将剩余的字符都push进去。先判断当前栈的栈顶和现在要push进去的元素是否是一对括号,如果是,那就直接pop,不是就push。把所有字符都添加进去后,返回这个栈是否为空。 public static boolean isValid(String s) { ...原创 2019-12-28 13:15:42 · 80 阅读 · 0 评论 -
【LeetCode】13. 罗马数字转整数
题目:自己的思路:将数字变成字符串,定义两个指针,分别是当前位置的字符和上一个位置的字符,用来处理特殊数字,例如 ‘IX’ 如果当前的字符是 X 上一次字符是 I 那么就将这两个字符放到一起,我们把字节字符分割之后,放入字符串数组里。然后遍历去匹配当前字符对应的值。由于对于匹配这一功能是一个字符串,对应一个数值,所以利用HashMap去存储。存储14个字符,除了7个简单的字符之外,还要...原创 2019-12-27 20:45:03 · 136 阅读 · 0 评论 -
【LeetCode】9.回文数
题目解法1:整型转字符型,然后使用两个下标进行对比即可。解法2:负数不可能是会问字符,直接返回即可。第一步:先算出这个数能除多少个10,这样能让我们就可以获取最高位。第二步:将数字的第一位和最后一位进行比较,如果相等,去除最高位和最低位,不相等直接退出重复第二步 public static boolean isPalindrome(int x) { if(x&l...转载 2019-12-26 20:23:03 · 131 阅读 · 0 评论 -
【LeetCode】7.整数反转
题目如下思路:既然是反转,那么我只要把最后一位的数字拿出来,推进到结果里,然后让原数字缩小十倍,这样就把原数字的最后一位给挤压出去,此时判断还有数字要向结果里压入么?如果有,那么当前结果×10,就相当于留出了位置。至于越界,最大值为:2147483647。 最小值为:-2147483648在对结果推入时。先判断此时结果是否比MAX_Vaule /10大,如果大于,或者,此时结果等于MA...转载 2019-12-25 17:11:01 · 206 阅读 · 0 评论