3 sum closest

在黑暗中找到光,藏在孤星之中也会找的到你。 问题描述:给定n个整数和一个目标整数。找到在这n个整数中满足三个数之和最接近目标数的三个数,返回这三个数的和。 注意:假设每一个输入都只有一个唯一的解。n个整数用一个数组存储。 限制:3 <= nums.length <= 10^3      -10^3 <= nums[i] <= 10^3       -10^4 <= target <= 10^4 解题思路:最直观的想法就是遍历这个数组中的所有的三个数之和。将每个三个数之和与目标数相减得到一个中间值作为衡量接近程度的指标。通过循环遍历所有的三个数之和,将中间值最小的作为判断是否找到最邻近数的标准。找到后,返回三个数之和。 具体步骤:先将数组中的前三个数的和做为基准值1,与目标数相减作为基准值2。假设基准值1就是我们要找的返回值。通过将所有的三数之和与目标数相减的值与基准值2作比较,当这个值比基准值2小的时候,基准值1更新为当前三数之和,基准值2更新为当前相减的值。最后返回更新迭代后的基准值1。比较的时候可以使用abs函数。 代码: #include<math.h> int threeSumClosest(int* nums,…

0 Comments

回文数(Parlindrome)

和光同尘 回文数是这样的数,即一个数从左往右数和从右往左数是同样的结果。比如aba,121. leetcode有一道题就是判断一个数是否是回文数。 问题描述:给定一个整数(int 类型),如果是回文数,函数返回为true. bool isPalindrome(int x){ } 1.自然的想到将数字转为字符,利用python中的字符翻转读取然后与原字符进行判断。str(x)==str(x)[:-1] 2.如果不能使用字符的话。可以考虑对数字进行翻转,对整个数字翻转可能会超界。因此可以考虑对数字的一半进行翻转。如何判断到了数字的一半呢?不妨设我们翻转的数为rev. while(x>rev) { rev=rev*10+x%10; x/=10; } 如上,当rev>x的时候,rev有和原数一半的位数或者一半的位数多一位。因此当rev/10或者rev和x(原数x的前一半)相等时,该数x是回文数。同时,当x是负数的时候,该数显然不为回文数。最后代码如下: bool isPalindrome(int x){ int rev=0; if(x<0||(x%10==0&&x!=0)) { return false; } while(x>rev) { rev=rev*10+x%10;…

0 Comments