ARTS-Week 02

发布于: 2020 年 06 月 24 日
ARTS-Week 02

Algorithm

三数之和

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

注意:答案中不可以包含重复的三元组。

解题:

思路1:暴力解法 3重for循环计算并去重, 时间复杂度O(n3).

思路2:先排序,指定一个数使用双指针法.

var threeSum = function(nums) {
let ans = [];
const len = nums.length;
if(nums==null || len<3) {
return ans;
}
nums.sort((a,b) => a-b);
for (let i=0; i<len; i++) {
let num = nums[i];
if(num > 0){
break;
}
if(i>0 && num==nums[i-1]) {
continue;
}
let L = i+1;
let R = len-1;
while(L < R){
const sum = num + nums[L]+nums[R];
if(sum == 0){
ans.push([nums[i],nums[L],nums[R]]);
while (L<R && nums[L] == nums[L+1]) L++;
while (L<R && nums[R] == nums[R-1]) R--;
L++;
R--;
}else if(sum<0){
L++;
}else if(sum>0){
R--;
}
}
}
return ans;
}

Review

Writing a Network Layer in Swift: Protocol-Oriented Approach

使用面向协议创建一个网络层

Tips

xcode在引用一些第三方库Frameworks是会出现category重复函数

ld: warning: instance method '' in category from /xxx/ conflicts with same method from another category

可以再build setting-Other linker flags中添加

-Xlinker

-noobjccategory_merging

去除警告⚠️

Share

iOS 懒人版二进制重排

用户头像

chasel

关注

还未添加个人签名 2018.03.20 加入

还未添加个人简介

评论

发布
暂无评论
ARTS-Week 02