第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,此时就可以将指向末尾的指针后移一位;
这样就构成了第二重循环和第三重循环再并列进行,得出结果。