CongliYin的博客

达则兼济天下,穷则独善其身。

Leetcode#477. 汉明距离总和

题目描述:链接 解题思路: 利用计算汉明距离的那题,暴力求解(leetcode中超时) 好的方法进一步讨论中 class Solution { public: int hammingDistance(int x, int y) { //两个数异或,为1表...

2018-09-05 18:03:25

阅读数:50

评论数:0

Leetcode#461. 汉明距离

题目描述:链接 解题思路: 两个数的异或,如果二进制结果中某一位为1,说明原始数字的对应位置两个数是不同的,因此只需计算两个数异或之后1的个数即可; 一个二进制数中1的个数,可以使用n&(n-1)的方法; class Solution { public: ...

2018-09-05 17:58:21

阅读数:12

评论数:0

Leetcode#42. 接雨水

解题思路: 可以发现被水填满后的形状是先升后降的塔形,因此,先遍历一遍找到塔顶,然后分别从两边开始,往塔顶所在位置遍历,水位只会增高不会减小,且一直和最近遇到的最大高度持平,这样知道了水位,就可以边遍历边计算面积; class Solution { public: int trap...

2018-08-28 17:43:28

阅读数:25

评论数:0

Leetcode#718. 最长重复子数组

动态规划: class Solution { public: int findLength(vector<int>& A, vector<int>& B...

2018-08-27 16:46:09

阅读数:66

评论数:0

Leetcode#154. 寻找旋转排序数组中的最小值 II

解题思路: 思路一:暴力搜索 思路二:二分搜索,当 mid > right时, left = mid+1;当mid < left时,right = mid;否则,right–; //思路一 class Solution { public: ...

2018-08-26 23:28:40

阅读数:12

评论数:0

Leetcode#153. 寻找旋转排序数组中的最小值

解题思路: 思路一:暴力搜索,后一个元素比前一个小,返回后一个元素;如果没有,说明最小的元素在第一个; 思路二:二分搜索, //思路一 class Solution { public: int findMin(vector<int&am...

2018-08-26 23:11:11

阅读数:21

评论数:0

Leetcode#11. 盛最多水的容器

题目见图片: 解题思路: 思路一:暴力求解,两个循环遍历,时间复杂度O(n*n); 思路二:双指针p, q 头尾遍历,每次较小的指针往中间移动,直至相遇,时间复杂度O(n); //思路一 class Solution { public: int maxArea(vector&...

2018-08-26 21:42:20

阅读数:17

评论数:0

Leetcode#653. 两数之和 IV - 输入 BST

解题思路: 二叉搜索树的中序遍历是有序的,先中序遍历,再使用twoSum II的二分法解决。 class Solution { public: void inorderTraversal(TreeNode* root, vector<int&g...

2018-08-25 15:39:01

阅读数:39

评论数:0

leetcode#31. 下一个排列

算法移动步骤点这里 C++实现如下: class Solution { public: void nextPermutation(vector<int>& nums) { int i, j; ...

2018-08-06 23:25:26

阅读数:39

评论数:0

leetcode#704. 二分查找

class Solution { public: int search(vector<int>& nums, int target) { int left = 0; ...

2018-08-05 21:49:53

阅读数:134

评论数:3

Leetcode#16. 最接近的三数之和

解题思路: 参考三数之和 类似动态规划问题 先排序,利用三数之和得到的sum与target求diff,如果diff减小,更新这三个数; 根据diff的变化改变指针,如果diff=0,直接返回;如果diff>0,需要右指针–;如果diff<0,需要左指...

2018-08-02 17:16:02

阅读数:31

评论数:0

Leetcode#15. 三数之和

解题思路: 将a + b + c = 0 转化成 -a = b + c 来解决; 注意去重; class Solution { public: vector<vector<int>> three...

2018-08-02 16:42:27

阅读数:19

评论数:0

Leetcode#350. 两个数组的交集 II

解题思路: 此题是 Leetcode#349. 两个数组的交集的升级版 要求输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致 使用一个dict存储nums1中每个元素出现的次数,遍历nums2中的元素,若其在dict中且value大于0,便将其加入返回结果 python实现...

2018-07-24 10:16:18

阅读数:40

评论数:0

Leetcode#349. 两个数组的交集

解题思路: 此题要求每个在结果中的元素必定是唯一的,可以不考虑输出结果的顺序 因此可以简单地求交集,再将交集去重即可 class Solution(object): def intersection(self, nums1, nums2): res = [] ...

2018-07-24 10:10:43

阅读数:13

评论数:0

Leetcode#434. 字符串中的单词数

class Solution: def countSegments(self, s): """ :type s: str :rtype: int "&am...

2018-07-19 23:11:22

阅读数:35

评论数:0

Leetcode#387. 字符串中的第一个唯一字符

解题思路: 第一遍遍历,统计各字母出现的次数 第二遍遍历,看当前字母是否只出现了一次,是则返回它的位置 遍历结束,返回-1 python实现如下: class Solution: def firstUniqChar(self, s): "&...

2018-07-19 22:50:08

阅读数:33

评论数:0

Leetcode#448. 找到所有数组中消失的数字

解题思路: 将nums[nums[i] - 1]的值置为负值; 最终没有被置为负值的数的索引即为缺失的数; C++实现如下: class Solution { public: vector<int> findDisappearedNum...

2018-07-17 22:42:28

阅读数:76

评论数:0

Leetcode#414. 第三大的数

思路描述: 由于nums中都是int,因此最小值应该是 -2147483648(long); 一个循环中依次选出第一大、第二大、第三大的数; 如果第三大不存在,返回第一大的数; C++实现如下: class Solution { public: int thirdMax(vec...

2018-07-17 21:50:00

阅读数:34

评论数:0

Leetcode#215. Kth Largest Element in an Array

题目描述:找出数组中第 k 大的数 解题思路: 使用数组内容构建一个最大堆/最小堆,通过每次pop出堆顶后继续维护堆的结构,直到满足一定的次数(最大堆k-1次,最小堆size-k次),堆顶的元素就是第k大的数字; 利用快排的partition函数思想,选定一个数组内的值作为pivot,将小于...

2018-04-17 12:13:39

阅读数:30

评论数:0

Leetcode#167. Two Sum II - Input array is sorted

题目描述:给定一个升序排列的数组和另外一个数target,若数组中某两个数的和等于target,输出这两个数的索引。假设只有一个解,索引从1开始(注意不是从0开始)。 解题思路:双指针问题。两个指针,左指针在数组头,右指针在数组尾。 若两者之和等于target,则返回索引; 若两者之和大于t...

2018-03-12 18:45:19

阅读数:26

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭