【Leetcode | 5】求和问题
一、1两数之和
二、15三数之和
C++ Soution 1:
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums)
{
vector<vector<int>> res;
sort(nums.begin(), nums.end());
; k < nums.size(); ++k)
{
)
break;
&& nums[k] == nums[k - ])
continue;
- nums[k];
, j = nums.size() - ;
while (i < j)
{
if (nums[i] + nums[j] == target)
{
res.push_back({nums[k], nums[i], nums[j]});
])
++i;
])
--j;
++i;
--j;
}
else if (nums[i] + nums[j] < target)
++i;
else
--j;
}
}
return res;
}
};
三、16最接近的三数之和
C++ Soution 1:
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target)
{
] + nums[] + nums[];
int diff = abs(closest - target);
sort(nums.begin(), nums.end());
; i < nums.size() - ; ++i)
{
, right = nums.size() - ;
while (left < right)
{
int sum = nums[i] + nums[left] + nums[right];
int newDiff = abs(sum - target);
if (diff > newDiff)
{
diff = newDiff;
closest = sum;
}
if (sum < target)
++left;
else
--right;
}
}
return closest;
}
};
四、18四数之和
C++ Soution 1:
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target)
{
vector<vector<int>> res;
sort(nums.begin(), nums.end());
if(nums.empty())
return {};
; k < nums.size(); ++k)
{
&& nums[k] == nums[k-])
continue;
; m < nums.size(); ++m)
{
int sum = target - nums[k] -nums[m];
&& nums[m] == nums[m -])
continue;
, j = nums.size() -;
while(i < j)
{
if(sum == nums[i] + nums[j])
{
res.push_back({nums[k], nums[m], nums[i], nums[j]});
])
++i;
])
--j;
++i;
--j;
}
else if(sum > nums[i] + nums[j])
++i;
else
--j;
}
}
}
return res;
}
};
五. 平方数之和
C++ Soution 1:双指针
class Solution {
public:
bool judgeSquareSum(int c)
{
;
long long high = sqrt(c);
while (low < high)
{
if (low*low + high * high == c)
return true;
else if (low*low + high * high > c)
high--;
else
low++;
}
return false;
}
};
367. 有效的完全平方数
C++ Soution 1:
class Solution {
public:
bool isPerfectSquare(int num)
{
) return true;
, right = num;//高低指针
long long mid;
while (left <= right)
{
mid = (left + right) / ;
long long target = mid * mid ; //防止超出int
if (target == num)
return true;
else if (target > num)
right = mid - ; //大了,就降低高指针
else
left = mid + ; //小了,升高低指针
}
return false;
}
};

50. Pow(x, n)
C++ Soution 1:
分析:迭代的解法,我们让i初始化为n,然后看i是否是2的倍数,是的话x乘以自己,否则res乘以x,i每次循环缩小一半,直到为0停止循环。最后看n的正负,如果为负,返回其倒数
class Solution {
public:
double myPow(double x, int n)
{
double res = 1.0;
; i /= )
{
!= )
res *= x;
x *= x;
}
? / res : res;
}
};

【Leetcode | 5】求和问题的更多相关文章
- leetcode 二进制求和 python
class Solution: def addBinary(self, a, b): """ :type a: str :type b: str :rtype: str ...
- 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
转自 http://tech-wonderland.net/blog/summary-of-ksum-problems.html 前言: 做过leetcode的人都知道, 里面有2sum, 3sum ...
- [LeetCode] Design Excel Sum Formula 设计Excel表格求和公式
Your task is to design the basic function of Excel and implement the function of sum formula. Specif ...
- (leetcode:选择不相邻元素,求和最大问题):打家劫舍(DP:198/213/337)
题型:从数组中选择不相邻元素,求和最大 (1)对于数组中的每个元素,都存在两种可能性:(1)选择(2)不选择,所以对于这类问题,暴力方法(递归思路)的时间复杂度为:O(2^n): (2)递归思路中往往 ...
- LeetCode 40 Combination Sum II(数组中求和等于target的所有组合)
题目链接:https://leetcode.com/problems/combination-sum-ii/?tab=Description 给定数组,数组中的元素均为正数,target也是正数. ...
- LeetCode 39 Combination Sum(满足求和等于target的所有组合)
题目链接: https://leetcode.com/problems/combination-sum/?tab=Description Problem: 给定数组并且给定一个target,求出所 ...
- LeetCode总结 -- 树的求和篇
树的求和属于树的题目中比較常见的,由于能够有几种变体,灵活度比較高,也能够考察到对于树的数据结构和递归的理解. 一般来说这些题目就不用考虑非递归的解法了(尽管事实上道理是跟LeetCode总结 -- ...
- LeetCode:二进制求和【67】
LeetCode:二进制求和[67] 题目描述 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11" ...
- LeetCode:范围求和||【598】
LeetCode:范围求和||[598] 题目描述 给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作. 操作用二维数组表示,其中的每个操作用一个含有两个正整数 a ...
- LeetCode解题报告--2Sum, 3Sum, 4Sum, K Sum求和问题总结
前言: 这几天在做LeetCode 里面有2sum, 3sum(closest), 4sum等问题, 这类问题是典型的递归思路解题.该这类问题的关键在于,在进行求和求解前,要先排序Arrays.sor ...
随机推荐
- CVE-2019-0797漏洞:Windows操作系统中的新零日在攻击中被利用
https://securelist.com/cve-2019-0797-zero-day-vulnerability/89885/ 前言 在2019年2月,卡巴实验室的自动漏洞防护(AEP)系统检测 ...
- 负载均衡获得真实源IP的6种方法 【转】
除了X-FORWARD-FOR,负载均衡中获得真实源IP的方法还有很多种, 本文抛砖引玉,主要介绍获得真实源IP的多种方法,而不是具体配置, 负载均衡获得真实IP的方法有很多种,将形成专题文章, 本文 ...
- c++学习day4
1.结构(struct) struct name{ int num; name *next; } 1)所占内存空间即结构中所有成员的变量大小之和 2)定义指向结构变量的指针比如 name *a; na ...
- Git学习笔记05-撤销修改
使用 git checkout -- file可以撤销工作区的修改 一种是修改后还没有放到暂存区,撤销修改回到和版本库一模一样的状态 lesson.txt文件已经提交到版本库了,内容如图. 修改一 ...
- 设计模式C++学习笔记之十六(Observer观察者模式)
16.1.解释 概念:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. main(), IObservable,被观察者接口 CHanFei ...
- salt使用技巧
实时截获任务输出 __salt__['event.send']("module_send_event", {'message': message, 'jid': jid}, ...
- NDK历史版本下载方法
再比如说,你要下载Android NDK, Revision 8b ,只要下面链接就可以了: http://dl.google.com/android/ndk/android-ndk-r8b-Linu ...
- JUnit3 和 JUnit4的区别
JUnit3 和 JUnit4的区别 1.JUnit 4使用org.junit.*包而JUnit 3.8使用的是junit.Framework.*;为了向后兼容,JUnit4发行版中加入了这两种包. ...
- safarai - loading.close() 无效问题
代码环境: vue + elenment 问题描述: 上传文件时,显示loading动画:上传成功后,隐藏loading动画.window 下常用的浏览正常,safari 下的chrome浏览器(目前 ...
- Razor视图基本语法
<!--Razor C#--> @for (int i = 0; i < 10; i++) { <baobao>good</baobao> } < ...