• LeetCode 前200里面的“简单”标签


    [不要看解答]
    wized 一天一千字好了qwq 然后简单3+
    嗯????刷题的时候那种轻松愉快的感觉怎么没了??
    esay还是先自己想,别看解答,自己学
    还有白纸debug肉眼debug的能力qwq
    /1【0001】
    这题,最简单无脑便捷的是暴力,我后面用set+map重写,发现,,,,发现wa点还是很多的
    【debug关键】
    1、使用set写的时候本来想存储负数,结果这不行鸭。要专门转换一下成正数qwq
    2、果然单纯数组不行的吧qwq
    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、
    我的本意是想return最高位那个,,,,然而,,,然而,,,,
    这个,,,,,是10的几次方,不是直接times哦。。
    然后, 用了Math.pow 但是只能double 于是
    和valueOf类型转换
    以及强制类型转换...还有这个
    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可以直接比较_(:з」∠)_
    报了一个
    无法到达的语句
    想来也是啊...  如果有坑是 所有人都一样  不就没饭返回了吗!!!
    这真的是当头一棒!我于是多写了个f来判断循环是不是结束了!
    但是break还是要break的!
    再想还不对,有点乱。IDEA比我懂啊…… 既然这个i是这样的i,那返回了i==len毫无意义,也只够跑一次。
    而其实!期望的是能到最短的那个的长度的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为数组
     
    for fits this       (String is not support)
    注意,这里的i已经是arr里面所有的元素了,不需要再去Nums[i]
    直接上面的写法就可以了,下面的是传统for循环的写法 for(int i...) 
    char to string:
    /26 set  (hope to get an array for return result...) 因为有点奇怪的返回的是n但是要求数组的更改,所以题目里也说明了一下
    !!!!  Set should be this...
    / 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就添加,反正肯定是这样构成的,于是没错啦_(:з」∠)_
     
  • 相关阅读:
    View Documentation in Web Using [openoffice.org 3+swftools+flexpaper]
    swfobject.js
    Java 文件上传组件 Apache Commons FileUpload 应用指南
    模拟HTML表单上传文件(RFC 1867)
    Using CURL to download a remote file from a valid URL in c++
    GUN tar for windows Practice
    Using libcurl in VC++
    Zlib Practice
    解决HtmlAgilityPack中文乱码
    Windows 7,Windows Server 2008 MSDTC配置
  • 原文地址:https://www.cnblogs.com/lx2331/p/10774021.html
Copyright © 2020-2023  润新知