C#解leetcode 18. 4Sum
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.
Note:
- Elements in a quadruplet (a,b,c,d) must be in non-descending order. (ie, a ≤ b ≤ c ≤ d)
- The solution set must not contain duplicate quadruplets.
For example, given array S = {1 0 -1 0 -2 2}, and target = 0.
A solution set is:
(-1, 0, 0, 1)
(-2, -1, 1, 2)
(-2, 0, 0, 2)我的答案:
public class Solution {
public IList<IList<int>> FourSum(int[] nums, int target) {
List<IList<int>> result = new List<IList<int>>();
Array.Sort(nums);
;i<nums.Length-;i++)
{
||nums[i]!=nums[i-])
{
;m<nums.Length-;m++)
{
|| (nums[m]!=nums[m-]) )
{
;
;
;
while(j<k)
{
List<int> res=new List<int>();
sum=nums[i]+nums[j]+nums[k]+nums[m];
if (sum==target)
{
]{nums[i],nums[m],nums[j],nums[k]};
res.AddRange(ints);
result.Add(res);
])
k--;
])
j++;
k--;
j++;
}
else if (sum>target)
k--;
else
j++;
}
}
}
}
}
return result;
}
}
总结:
1 这个答案虽然可以Accepted,但是运行时间太慢
2 int[] ints=new int[4]{nums[i],nums[m],nums[j],nums[k]}; res.AddRange(ints); 利用这两句可以向List中批量添加数据
3 Array.Sort(nums);可以直接对数组排序。
4 这个算法是在sum3的基础上改进的,在第二层for循环中要有条件(m-i)==1;确保当i!=0时候,就算m=i+1&&nums[m]==nums[i]的时候,也能进入if语句中
第二种,也是效率更高更好理解的一种方法,建议掌握这种方法,因为这种方法很容易可以迁移到其他个数相加的类似问题中:
public class Solution {
public IList<IList<int>> FourSum(int[] nums, int target) {
List<IList<int>> result = new List<IList<int>>();
Array.Sort(nums);
;i<nums.Length-;i++)
{
int target_3=target- nums[i];
;j<nums.Length-;j++)
{
int target_2=target_3- nums[j];
,back=nums.Length-;
while(front<back)
{
int sum=nums[front]+nums[back];
if(sum>target_2)
back--;
else if (sum<target_2)
front ++;
else
{
List<int> res=new List<int>();
]{nums[i],nums[j],nums[front],nums[back]};
res.AddRange(ints);
result.Add(res);
]) front++;
]) back--;
front++;
back--;
}
}
<nums.Length-&&nums[j]==nums[j+])
j++;
}
<nums.Length-&&nums[i]==nums[i+])
i++;
}
return result;
}
}
C#解leetcode 18. 4Sum的更多相关文章
- [LeetCode] 18. 4Sum 四数之和
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...
- LeetCode——18. 4Sum
一.题目链接:https://leetcode.com/problems/4sum/ 二.题目大意: 给定一个数组A和一个目标值target,要求从数组A中找出4个数来使之构成一个4元祖,使得这四个数 ...
- LeetCode 18 4Sum (4个数字之和等于target)
题目链接 https://leetcode.com/problems/4sum/?tab=Description 找到数组中满足 a+b+c+d=0的所有组合,要求不重复. Basic idea is ...
- [LeetCode] 18. 4Sum ☆☆
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...
- LeetCode 18. 4Sum (四数之和)
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...
- leetcode 15 3sum & leetcode 18 4sum
3sum: 1 class Solution { public: vector<vector<int>> threeSum(vector<int>& num ...
- Leetcode 18. 4Sum
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...
- Java [leetcode 18]4Sum
问题描述: Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d ...
- [leetcode]18. 4Sum四数之和
Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums s ...
随机推荐
- MAC 开发工具
web开发编辑器 Espresso下载地址 密码: i9hr
- centos挂存储
#看硬盘有木 fdisk -l #格式化 parted /dev/sdb mklabel gpt print quit #如果多个分区执行 如果不要么 #mkpart primary 0 4.5T ...
- linux主要目录的作用
手动敲一遍.算是加强记忆吧~ /:文件系统的入口,也是最高一级的目录 /bin:最基本的且着急用户和普通用户都可以使用的命令放在此目录下,如:ls.cp等 /boot:存放Linux的内核及引导系统所 ...
- Unity各平台路径总结
路径是Unity开发中令人头疼的一个问题,根据我的开发经验,现将开发中遇到的路径问题总结如下: 1. 如何读取Application.streamingAssetsPath下的文件? Edit.iOS ...
- Comparing randomized search and grid search for hyperparameter estimation
Comparing randomized search and grid search for hyperparameter estimation Compare randomized search ...
- Qt之自定义托盘(两种方法)
http://www.cnblogs.com/swarmbees/p/5789482.html http://www.cnblogs.com/swarmbees/p/5812031.html
- 如何使用json在前后台进行数据传输
上一篇博客写到用javascript生成多组文本,可以让数据的输入不受显示,现在我们需要把这些输入写入数据库,这里就用到json传入. 首先,我们来写一下后台如何生成要传输的数据 function g ...
- Linux Shell脚本Ldd命令原理及使用方法
1.首先ldd不是一个可执行程序,而只是一个shell脚本2.ldd能够显示可执行模块的dependency,其原理是通过设置一系列的环境变量如下:LD_TRACE_LOADED_OBJECTS.LD ...
- 斜率优化(CDQ分治,Splay平衡树):BZOJ 1492: [NOI2007]货币兑换Cash
Description Input 第一行两个正整数N.S,分别表示小Y 能预知的天数以及初始时拥有的钱数. 接下来N 行,第K 行三个实数AK.BK.RateK,意义如题目中所述 Output 只有 ...
- Linked List Cycle——LeetCode
Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it without using ext ...