![](https://img-blog.csdnimg.cn/20200825123713717.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
温水青蛙
三年温水青蛙尝试出水
Collecting_Chen
这个作者很懒,什么都没留下…
展开
-
Day12 Longest Common Prefix(3)
分治递归需要反复理解/** * @Author:lixici * @Date:2020/9/4 22:43 */public class LongestCommonPrefix5 { public String longestCommonPrefix(String[] strs) { if(strs.length == 0){ return ""; } return findCommonPrefix(strs,0,s原创 2020-09-07 23:40:14 · 129 阅读 · 0 评论 -
Day11 Longest Common Prefix(2)
看了官方解析昨天迷迷糊糊中想到了set,结果更慢了,13ms 40M横向对比(把第一个字符串当做LCP,逐对对比,更新LCP,直到遍历完所有字符串,或者LCP为空时结束)纵向对比Code横向对比1ms 37.8M/** * @Author:lixici * @Date:2020/9/4 22:38 */public class LongestCommonPrefix3 { public String longestCommonPrefix(String[] strs) {原创 2020-09-04 23:07:00 · 119 阅读 · 0 评论 -
Day10 Longest Common Prefix(1)
初解思路第一反应就是二维数组,纵向对比。关于对比方式,想到了char累加,平均等于第一个数组里的值即可(实际上第一个数组里的值等于平均值的话,就出错了。比如[“b”,“a”,“c”])。乖乖采取挨个对比。结果:11ms 39.9M --------------- (ΩДΩ)再想想吧Code/** * @Author:lixici * @Date:2020/9/3 22:28 */public class LongestCommonPrefix { public String l原创 2020-09-03 23:20:35 · 83 阅读 · 0 评论 -
Day9 Roman to Integer(2)
看了精选题解把static map换成switch并没有快,还多占用了0.3M内存(可能和用例有关吧)【6ms 40.3M】发现自己中途过度理解题意(出现在前面的负数位,最多只出现一次)其实无所谓是谁出现在谁前面是负数,只要是小的在大的前面,小的就算是负数。发现了彩蛋实现Codea. 去掉了多余的循环判断,保留switch修改了对比前后数字的方法,没必要把数组传过去,按题意也不会出现多次,while换成if结果:5ms 40.2Mimport java.util.HashMap;im原创 2020-09-02 22:57:22 · 86 阅读 · 0 评论 -
Day8 Roman to Integer(1)
思路特殊情况前后I=1(V=5或X=10)-1?+1{3}X=10(L=50或C=100)-10?+10{3}C=100(D=500或者M=1000)-100?+100{3}从后往前逐字符读取遇到任意字符,累加对应数字特殊情况处理(表格中“前”的情况)判断在前面连续出现几次,加上相应负值,指针迁移相应位遇到 V或者X,判断I遇到 L或者C,判断X遇到 D或者M,判断CCodeimport java.util.HashMap;i原创 2020-09-01 23:49:46 · 109 阅读 · 0 评论 -
Day7 Palindrome Number
CodeReverse给的启示,又想到了之前看到过 y == x || y == x/10回翻了当时的答案,各种特殊情况都不满足,补充。(还写了一个map版的,更慢)不必要的判断耗费时间?public boolean isPalindrome(int x) { int y = 0; // 1.个位数是回文 if(x>=0 && x<10) return true; // 2.负数不是回文 while(x>0){原创 2020-08-31 23:10:59 · 151 阅读 · 0 评论 -
Day6 Reverse Integer(2)
Point整型/10 = 0 – 0(除完了)/和%运算是带符号的-21/10 = -221/10 = 2-21%10 = -121%10 = 1Integer.MAX_VALUE(int最大值231-1); Integer.MIN_VALUE(int最小值-231)溢出即时判断,不要放在循环结束数字的pop和pushpop:1234取出最后一位4最后一位 = 1234%10源 = 1234/10push123追加一个4源 = 123 * 1原创 2020-08-29 23:34:57 · 79 阅读 · 0 评论 -
Day5 Reverse Integer(1)
水了水了,时间不够,勉强凑出一版。(长度为32的数组是来搞笑的,嗯,没错)public int reverse(int x) { int[] arr = new int[32]; long x1 = x; int sign = x1 < 0 ? -1 : 1; x1*=sign; int i = 0; do{ arr[i++] = (int)x1%10; x1/=10; }while(x1>=1);原创 2020-08-28 23:30:31 · 77 阅读 · 0 评论 -
Day4 TwoSum哈希表(两次遍历和一次遍历)
两次遍历public int[] twoSum(int[] nums, int target) { Map<Integer,Integer> numsMap = new HashMap<Integer,Integer>(); int length = nums.length; for(int i=0;i<length;i++){ numsMap.put(nums[i],i); } for(int i=0;i<l原创 2020-08-27 22:24:40 · 209 阅读 · 0 评论 -
Day3 排序能不能有助于Two Sum效率呢(简单交换排序)
结合了简单交换排序的 Two Sum。。。 leetcode上超出时间限制也是,本来就是想减少暴力解决中的循环,排序和排除比target大的部分又用了一个for两层嵌套循环和while循环(我到底图个什么)下面仅是简单交换排序(新的Two Sum提交就留在leetcode让我羞愧吧)import java.util.Arrays;/** * @Author:lixici * @Date:2020/08/26 22:41 */public class SwapSort { //原创 2020-08-26 23:07:29 · 71 阅读 · 0 评论 -
Day2 leetcode - Two Sum引起的hash函数探索
写在前面Two sum引起的学习。暴力解决中发现忘记了如何创建数组查看解决方案,产生了HashMap怎么做到O(1)的疑问特别感谢:“淡腾的枫”的《HashMap中的hash函数》创建一个int数组int[] arr = new int[5];int[] arr = {};HashMap&,|,~,^,>>>Object.hashCodeObject的hashCode方法public native int hashCode();通过阅读方法上的注释,原创 2020-08-25 23:20:52 · 85 阅读 · 0 评论 -
Day1 开启Github之旅
Hello World Guides单词列表英文释义time-honored tradition历史悠久的传统code hosting platform代码托管平台version control and collaboration版本控制和协作tutorial教程essentials要领repository仓库spreadsheets电子表格recommend推荐upper right corner右上角avat翻译 2020-08-24 23:18:01 · 343 阅读 · 0 评论