Day 10

第14题:

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。(来自LeetCode)

1、为求出最大公共前缀,可以先将数组内前两个字符串相比较求出最长前缀;

  再用最长前缀和下一个字符串相对比,依次求出公共前缀,得出结果。

  (数组的length是属性,是str.length)

    (字符串的length是方法,是str.length())

  

第15题:

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。

注意:答案中不可以包含重复的三元组。来源:力扣(LeetCode)

1、暴力求解,三重循环直接求出所需的三元组;

  其中Set集合避免了内部出现相同的集合。

  (集合长度size())

  

2、为降低时间复杂度,改进了三重循环暴力求解;

  为方便在选择三个数的时候筛选相同的数,将数组先排序再开始筛选;

  先定位第一个数的位置,数组首位;

  因为已经定义好了第一个数nums[i],现在只需要找出和为-nums[i]的另两个数即可;

  可以将一个指针指向数组末尾,将另一个指针指向nums[i+1],当两者相加的数字比nums[i]大,说明三数之和大于0,此时就可以将指向末尾的指针后移一位;

  这样就构成了第二重循环和第三重循环再并列进行,得出结果。

  

posted @ 2020-06-26 02:22  Liang-Yi  阅读(32)  评论(0编辑  收藏  举报