
2017-8
马小驴
这个作者很懒,什么都没留下…
展开
-
【leetcode】15.3sum 两种解法总结
【方法一】 「思路」 将结果总体分为3种: 1.包含0 a.包含一个0 b.3个都是0 2.两正一负 3.两负一正 按照零正负将数组分为三组,依次两两组合两正之和来查看有没有绝对值相等的负数,两负数同理。最后将返回的vector去重。(注意:两正一负,两负一正在返回结果时要注意三个数字的顺序,否则会影响去重结果) **「结果」**Runtime: 299 ms原创 2017-08-03 01:05:02 · 660 阅读 · 0 评论 -
【leetcode】16.3Sum Closest 方法总结
【方法一】 「思路」 先将数组排序,用目标数依次减去nums中的每一个数作为间接目标数mid。对剩下的数组设立两个指针,front和back,从两面夹击使得minus=mid-nums[front]-nums[back]的绝对值最小。minus实际代表与target的差值。minus绝对值越小代表与target越接近。最终用target-minus就得到了我们要的答案。 「结果」 Runti原创 2017-08-03 13:04:16 · 295 阅读 · 0 评论 -
【leetcode】18.4sum 总结
「问题」 「思路」 同3sum,只是多加了一个循环。 首先将数组排序。通过两个循环遍历整个数组,确定结果的前两个数。用target减去前两个数得到后面两个数的和mid。通过夹击的方法求得后面两个数的和sum,对比sum和mid的大小,如果相等的话则返回结果,如果sum>mid则back指针向前移,如果sum<mid则front指针向后移。最后将ret结果排序去重。 「结果」 Runti原创 2017-08-03 14:10:43 · 234 阅读 · 0 评论 -
【leetcode】454. 4Sum II 总结
【方法一】 「思路」 近似暴力解法,将AB数组中元素依次相加得到数组ab,CD数组中元素依次相加得到数组cd,若ab中的元素加cd中的元素和为0,则结果加1. 「结果」 Time Limit Exceeded 「代码」 int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D)原创 2017-08-03 15:41:23 · 407 阅读 · 0 评论 -
Path Sum,Path Sum II,Path Sum III总结
【Path Sum I】 「运行结果」 class Solution {public: bool hasPathSum(TreeNode* root, int sum) { if (root == NULL) return false; else if (root->left == NULL && root->right == NULL && root-原创 2017-08-24 20:37:04 · 240 阅读 · 0 评论 -
【leetcode】563. Binary Tree Tilt总结
「思路」 设定两个函数,tilt,sum。tilt负责收集左右的和,并相减,并将所有相减的结果想加。sum负责纵向的相加,算出左右字树数字的和。分类按照有无左右子数分类。 「运行结果」 class Solution {public: int findTilt(TreeNode* root) { if(!root)return 0; return til原创 2017-08-27 22:43:08 · 326 阅读 · 0 评论 -
【leetcode】104,110,111总结
【111. Minimum Depth of Binary Tree】 「思路」 利用深度优先算法,预先设定一个比较大的ans值,不断更新ans的最小值,最终找到最短路径。 「代码」class Solution {public: int ans=100000000; int minDepth(TreeNode* root) { if(!root)retur原创 2017-08-30 00:19:57 · 360 阅读 · 0 评论 -
【leetcode】124.Binary Tree Maximum Path Sum
「思路」 将问题转化为两个部分,第一部分为maxsum函数,实现以不同节点作为根节点的最大结果,并不断更新最大结果。第二部分为downsum函数,由于maxsum函数确定了根节点,所以downsum负责以固定点为根节点向下传递时路径最大的和。 但是这种办法导致超时。class Solution {public: int ans; int maxPathSum(TreeNode*原创 2017-08-31 07:53:38 · 309 阅读 · 0 评论 -
【leetcode】129. Sum Root to Leaf Numbers
「思路」 用a,b分别记录右子树和左子树当前的值,在root没有左右子树时,将最终取得的a或b的值加给ans。当仅有右子树时,a在加上当前root的值和从上一层传递来的数据(由于不知道上一层是从a还是b传来的,所以a,b都要加上),再*10。指针向右子树继续向下传递(注意,仅从右子树向下传递时,b要清0,以防重复计算)。同理的仅有左子树的情况。当左右子树都有时,a b都要重新用以上方法计算。 「原创 2017-09-01 02:35:58 · 220 阅读 · 0 评论