[不要看解答] wized 一天一千字好了qwq 然后简单3+ 嗯????刷题的时候那种轻松愉快的感觉怎么没了?? esay还是先自己想,别看解答,自己学 还有白纸debug肉眼debug的能力qwq /1【0001】 这题,最简单无脑便捷的是暴力,我后面用set+map重写,发现,,,,发现wa点还是很多的 【debug关键】 1、使用set写的时候本来想存储负数,结果这不行鸭。要专门转换一下成正数qwq 2、果然单纯数组不行的吧qwq (未转)LeetCode 前200里面的“简单”标签 随笔 第1张 set的范围够吗?cc说,set是用的红黑树,所以应该没事,map也,所以重写了 发现wa点: 3,3  6  如果有重复元素怎么应对!(添加了break) 3 2 4 如果检查到的元素只是自己而已怎么办!(添加了判别相等则continue) -1 -2 -3 -4 。。。。 找-8 发现原来是自己insert的时候插入错了,因为map是后来改的 tmd呀... 肉眼debug能力完全没有╥_ 最后的大麻烦代码
class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] array = new int[2];//返回值qwq
        Set<Integer> s1=new TreeSet<Integer>();
        Map<Integer,Integer> map1=new HashMap<Integer,Integer>();
        Map<Integer,Integer> map2=new HashMap<Integer,Integer>();
        Set<Integer> s2=new TreeSet<Integer>();
        int len=nums.length;
        int tmp=0;
        for(int i=0;i<len;i++){
            // 0 是不是不符合规范-.- 先不考虑了
            if(nums[i]>0){
                s1.add(nums[i]);
                map1.put(nums[i],i);
            }
            else{
                tmp=0-nums[i];
                s2.add(tmp);//存储负数
                map2.put(tmp,i);
            }
        }
        for(int i=0;i<len;i++){
            tmp=target-nums[i];
            if(tmp>0) {
                if(s1.contains(tmp)){
                    array[1]=i;
//                  // find array 0
                    Set<Integer> keySet=map1.keySet();
                    int value=0;
                    for(Integer key:keySet){
                        if(key==tmp)
                        value=map1.get(key);
                    }
                    if(value==i)continue;
                    array[0]=value;
                    break;
                }
            }    // elseif  0 这里 没有 判断qwq
            else{
                tmp=0-tmp;
                // 小鱼0吧qwq
                if(s2.contains(tmp)){
                    array[1]=i;
                    Set<Integer> keySet=map2.keySet();
                    int value=0;
                    for(Integer key:keySet){
                        if(key==tmp)
                            value=map2.get(key);
                    }
                    if(value==i)continue;
                    array[0]=value;
                    break;
                }
            }
        }
        return array;
    }
}
  IDE没有,白纸我总有的吧,可以把结构在纸上列一下。qwq还是很好的 注意这一段
                   Set<Integer> keySet=map1.keySet();
                   int value=0;
                   for(Integer key:keySet){
                       if(key==tmp)
                       value=map1.get(key);
                   }
    【官方解答】 直接一遍扫完,有则提取然后返回,没则加入 遍历一遍的同时也解决了问题,可谓 有点方便快捷了qwq /2 【0009】 ----字符转换1A emmmm.... 还真是转换成字符串更简单,还是先挂起吧qwq 看一下转串的方法!! 嗯,学了charAt  valueOf (英文键盘敲代码好棒qwq 好了,既然手机打不开没法看论文就再想想  ----准备使用函数来重新写一遍 然后呢,重写了用int的,有三个感受 1. 好好读题qwq 小鱼0 的直接返回false 而不是什么tmp=0-tmp啊 2. 返回值用-1 不要用0,不然有时候真的是0 ,比如这个险恶的1001,很能会出事,,,选一个【肯定不会用得到的】当返回值 3.最好别偷懒, 比如可以减掉c1,偏要去x=x/10什么的,还是尽量选择已经确定了的数。(我是因为顺序*2 写错啦 4、 (未转)LeetCode 前200里面的“简单”标签 随笔 第2张 我的本意是想return最高位那个,,,,然而,,,然而,,,, 这个,,,,,是10的几次方,不是直接times哦。。 然后, 用了Math.pow 但是只能double 于是 和valueOf类型转换 以及强制类型转换...还有这个 (未转)LeetCode 前200里面的“简单”标签 随笔 第3张 LeetCode是帮你把main函数写好了 吧。。。。。。。 然后T 了.. time limit.. ??? ....easy的题...  我真的那么菜吗 好的吧,debug那么久。。。 还是先思考思考吧,感觉写代码的感觉也不对(?) 遵循 抽特王的原则:  debug时间超过写题的时间  山道重写 昨天睡觉时候想了一下 发现qwq其实可以directly 直接把一个大大的数字转换成一串串 这样就可以直接去换了(换了键盘还挺舒适的...  timelimit肯定是死循环了呀...废弃代码的话qwq 鉴于手疼  要不先别看了 我在纸上实现一下 anyway .,,,  100 of easy, and get know of java new an array:        int[] arr=new int[50];  感觉.. 感觉那种不能直接一统天下的写法就要考虑无数的.. 特殊情况  所以啊 还是一锅端爽快(不你 一锅端代码
class Solution {
    public boolean isPalindrome(int x) {
        if(x<0)return false;
        int n=0;
        int[] arr=new int[50];
        int tmp=x;
        while(tmp>0){
            arr[n]=tmp%10;
            n++;
            tmp=tmp/10;
        //until tmp== 9   9 /10=0...
        }
        //and the same
        if(n==1)return true;
        else{
            tmp=n/2;
            for(int i=0;i<tmp;i++){
                if(arr[i]!=arr[n-1-i])return  false;
            }
            return true;
        }
    }
}
    /3 【0014】 perfix  只能是前缀哦qwq   直接先学一下java二维数组? 获取数组长度:str.length即可 先取第一个的最开始,如果它不行,所有的都不行…… 它们是捆绑关系,难度降低为没有(不你 这个完全减低了出错可能。溢出都降没了…… 但是吧qwq就是我 思路啥的可能还是有错,以及 java不熟悉语法,所以先写个easy是没啥问题的qwq,不过可以easy  medium一起做~ ヽ( ̄ω ̄( ̄ω ̄〃)ゝ charAt这种的~~~~~ 然后char可以直接比较_(:з」∠)_ 报了一个 (未转)LeetCode 前200里面的“简单”标签 随笔 第4张 无法到达的语句 想来也是啊...  如果有坑是 所有人都一样  不就没饭返回了吗!!! 这真的是当头一棒!我于是多写了个f来判断循环是不是结束了! 但是break还是要break的! 再想还不对,有点乱。IDEA比我懂啊…… 既然这个i是这样的i,那返回了i==len毫无意义,也只够跑一次。(未转)LeetCode 前200里面的“简单”标签 随笔 第5张 而其实!期望的是能到最短的那个的长度的n,就break。 这样多试验了几次 发现 是我写错了   看起来简单 但是while和for  数组顺序和字符串的顺序 可能会混 从而出错 嗯.. 虽然的确是我写错了,但是的确true会死循环,换成终止条件更保险。慎用while(true)吗…… 总而言之,思路思路要能比较清楚,这样改起来也很happy啊 最后,这个题,或者说字符串的题, 用心很险恶啊。。 尤其是你直接上来就用了charat,如果又遇到了空串就gg了,注意空串可能是[]  [""]  这些种啊!!!! 字符串就要考虑空串. 官方solotion'
 public String longestCommonPrefix(String[] strs) {
    if (strs.length == 0) return "";
    String prefix = strs[0];
    for (int i = 1; i < strs.length; i++)
        while (strs[i].indexOf(prefix) != 0) {
            //这个直接判断字符串的啊...
            // 这样的话, 我出现,并且我在你的前面,,, 非常完美了吧 而且正好是0 
            prefix = prefix.substring(0, prefix.length() - 1);
            if (prefix.isEmpty()) return "";
        }        
    return prefix;
}
            // 然后我掉之后,因为我是while循环啊
            // 所以我一直在跑,等我减掉看我还能不能适应你的要求啊, 能不能啊!!!!
            // 我减掉也不能的话, 我就再减,能的话就ok, 这简直搞不好一次就出答案了....  真的是喵 啊
           
    public int indexOf(int ch):  返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 这写的真好啊... ...啊...  有点像是上一个,暴力来循环的话问题就是会太 饿,总之最后的解决方案就是和上次一样,直接进行了cut,边找边得,最后得到的直接刮完了,,,以及还是判断了等于0 indexOf (str) 返回str在字符串里面第一次出现的索引 在java 里面 这样直接就已经是前缀了 如果-1不存在 0 就是前缀 字符串减掉一个 也使用了substring(0.len-1) 注意是substring!以及!length和length()!还有,substring是开头结尾鸭 /20 java stack  Stack  empty peek/// see what top is  pop()  push() char是基础类型 Stack是不支持char的... 要String再转下 search // return place  for循环在数组或者其他数据里的简单写法   nums为数组   (未转)LeetCode 前200里面的“简单”标签 随笔 第6张

 

for fits this       (String is not support) 注意,这里的i已经是arr里面所有的元素了,不需要再去Nums[i] (未转)LeetCode 前200里面的“简单”标签 随笔 第7张

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。 直接上面的写法就可以了,下面的是传统for循环的写法 for(int i...)  char to string: (未转)LeetCode 前200里面的“简单”标签 随笔 第8张 /26 set  (hope to get an array for return result...) 因为有点奇怪的返回的是n但是要求数组的更改,所以题目里也说明了一下 (未转)LeetCode 前200里面的“简单”标签 随笔 第9张 !!!!  Set should be this... (未转)LeetCode 前200里面的“简单”标签 随笔 第10张 / 27 1. 要考虑 字符串为0的情况 这不是耸人听闻.... 而是真的会有意外发生鸭  前后的话为0就是前后都等于0  前=后-1的循环就永远不会出来) 2. 这种题timelimit了肯定是循环有问题....  前面说过了while里面最好别放true, 那现在也别放!= 因为表达的是相同的意思, 但是显然大于小于会更好一些 这样呢..  其实又发现赋值进去的话,而不是直接prev++ 也可能出现 循环完跳不出去的问题 t了两次 发现还 是思路有问题 如果val在后面的话,prev和nex相遇了也不够数 不妨记录掉n  再两头找 脑内能先过样例吗 ........又wa了一次  不能靠样例来提示泥过不过啊。。。  过不过啊。。。 啊。。。啊。。。。 【at least at least就是最少的一点就是。。 嗯。。 脑内样例i, 。。。先把你说的算法在纸上预演一遍。bugfree…… 有点难_(:з」∠)_ 这个题给我的感触好多啊!!!! 开始总是小wa 小t ,其实还是自己的逻辑不够清晰。在这里也先不打了,以后也想不起来,但是。真的想明白了,真的逻辑足够清楚了,脑内实践过了,再改起来才得心应手吧 思维能力很重要。不管是周围有谁 你的环境和干扰都分别是什么 看了官方解答, 感觉也还好,一个快指针 一个慢指针扫一遍,(把好的元素用完一遍之后扔到前面慢指针那里去)或者是看到等于val就移除,扔到后面去然后释放一个,如果扔的就是val再释放一个,直到不是才+ 。。。 一样一样QAQ / 12 13  【Roman to integer and integer toRoman】 看人家咋写的吧_(:з」∠)_ 字符串转换int,因为对应比较简单,不用自己拆解,map应该可以解决;int转字符串情况比较多。 map.put'I',1); 这种.. 也可以chNext  if不是null而且大于就减掉啥的 比较多。那也不应该去暴力一堆,看到了一个好思想,是直接两个数组对应起来,一个在前面跑一遍过去,一个在后面减一遍过去,上面int减,下面string就添加,反正肯定是这样构成的,于是没错啦_(:з」∠)_  
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄