zoukankan      html  css  js  c++  java
  • leetcode

    1.Two Sum


     解题思路明显是用target-nums[i]判断给定数组中是否存在,问题是如何快速找到,不然就成了n2问题了。一种思路是hashmap,另一种是大数组,后者问题出在了如果存在负数情况如何考虑(提交速度快的答案只是投机取巧测试用例最小用到了-4)。如果我用另外一个数组专门存负数的,反而慢了很多和n2快接近了,因为每一次循环要作的判断太多。

    本题还是典型的空间换时间问题。

    15. 3Sum


     解题思路,一开始没有考虑那么深刻,先进行排序,然后循环每一个数,从它后面根据two sum的规律进行查找即可。但是问题的关键在于重复数组,如果在n2时间复杂度下再进行contains查询肯定时间太长,然后陷入了[0,0,0,0]和[-1,-1,0,1,2]的测试用例中,因为如果外层循环直接排除重复,那么有可能是-1-1这种情况被排除,还有一个问题没考虑到是[-2,0,1,1,2],需要two sum进行再搜索。仔细想想,问题关键在于重复,一开始的两个用例归结就是内层循环的重复问题,其实解决内层循环就可以了。 while(start!=end&&nums[start]==nums[start-1])start++; start和end分别是内层循环的起始末尾的判断。

    本题思路情况影响较多,需要抽离出公共点,将情况缩减就可以得出清晰的思路。

    167. Two Sum II - Input array is sorted


     解题思路要考虑到排序,所以我们要想到如何利用,假如我们存在某组数据不合适,这时候由于是排序的,如果大于指定的target,那么我们可以将选择到的排在靠后的数据替换成它的前一个,小于同理。

     

    2. Add Two Numbers


     解题思路还是比较简单的,只是要注意向高位进位。

    比较优的解法借鉴思路是将所有可能的情况放入while中,用或运算进行判断,进而少掉了很多冗余的写法。while(l1 || l2 || carry);

     Reverse Words in a String


    题目要求反转句子中所有word的位置。思路整个句子反转然后每个word中的字母,但是在写清除前后空格和连续空格的时候卡壳很久。

    这个是我总是陷入的思路

    for ( int i=0; i<len ; i++) {
        if ( c[i] != ' ' ) {
            for ( ; i<len && c[i] != ' ' ; i++) {
                 c[start++] = c[i];
            }
        }
    }

    这个是比较好的清晰思路

    // trim leading, trailing and multiple spaces
      String cleanSpaces(char[] a, int n) {
        int i = 0, j = 0;
          
        while (j < n) {
          while (j < n && a[j] == ' ') j++;             // skip spaces
          while (j < n && a[j] != ' ') a[i++] = a[j++]; // keep non spaces
          while (j < n && a[j] == ' ') j++;             // skip spaces
          if (j < n) a[i++] = ' ';                      // keep only one space
        }
      
        return new String(a).substring(0, i);
      }

    总结:条件嵌套太多层,不如外层一个循环但不判断条件,然后内部按逻辑判断条件,不会造成外层的判断其实有两种以上情况

  • 相关阅读:
    2016.7.17
    2016.7.16
    2016.7.15
    2016.7.12
    2016.7.11
    2016.7.10
    coco2d-x中的坐标系问题
    cocos2d-x中的Tiled地图
    cocos2d-x中的Box2D物理引擎
    python文件处理及装饰器
  • 原文地址:https://www.cnblogs.com/GrimReaper/p/8977945.html
Copyright © 2011-2022 走看看