LeetCode
十早韦up
人要有所执,方能有所成
展开
-
LeetCode:700. Search in a Binary Search Tree(二叉搜索树中的搜索)
题目原题链接算法二叉树递归搜索,没什么好说的AC代码(c++)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(...原创 2020-02-14 12:44:11 · 95 阅读 · 0 评论 -
LeetCode:1013. Partition Array Into Three Parts With Equal Sum(将数组分成和相等的三个部分)
题目原题链接算法暴力算法肯定时间超时,数组分成3份,利用双指针法可以实现线性时间设第一个指针i=0i=0i=0,第二个指针j=A.size()−1j=A.size()-1j=A.size()−1,接下来判断指针移动的条件因为数组中的元素有正有负,所以我们不能通过比较大小的方式来判断指针移动,那么我们就直接从结果出发,如果有一份的和不等于和的1/31/31/3,我们就移动指针直到不能移动...原创 2020-02-14 12:37:54 · 184 阅读 · 0 评论 -
LeetCode:836. Rectangle Overlap(矩形重叠)
题目原题链接算法主要两种方法,一种是从正向判断(有正重叠面积的条件),另一种是反向判断(没有正重叠面积的条件)反向判断的条件比较容易想到,就是一个正方形最上面的边在另一个正方形最下面那条边的下面(左右方向同理)正向判断就是反相判断条件的补集AC代码(c++)class Solution {public: bool isRectangleOverlap(vector<...原创 2020-02-14 11:58:43 · 200 阅读 · 0 评论 -
LeetCode:38. Count and Say(外观数列)
题目原题链接算法题目规定每一项都是上一项的描述,规定第一项是"1",第一项的描述是1个1,因而第二项是"11",第二项的描述是2个1,因而第三项是"21",这样递归描述下去由题意可知,如果想求第n项就必须就第n-1项(在没有打表的情况下),这是很典型的递归结构,因此本题选用递归方法来解决算法过程:1.如果是1直接返回1;2.如果n>1,则求第n-1项;3.在第n-1项的基础...原创 2020-02-13 17:05:53 · 120 阅读 · 0 评论 -
LeetCode:36. Valid Sudoku(有效的数独)
题目原题链接算法这道题的要求是检验题目给出的九宫格是否有效,只需要检测给出的数字就可以了算法主要需要验证横向,纵向,子宫格是否有重复数字,可以分为三次遍历,也可以一次遍历可以利用公式index=(i/3)∗3+j/3index=(i/3)*3+j/3index=(i/3)∗3+j/3来表示每一个3x3子宫格的下标,(图是盗的)这样检查横向的数字是否重复需要9个哈希表(或数组,因为这...原创 2020-02-13 14:25:30 · 225 阅读 · 0 评论 -
LeetCode:34. Find First and Last Position of Element in Sorted Array(在排序数组中查找元素的第一个和最后一个位置)
题目原题链接算法题目是对有序数组进行下标的查找,而且要求时间复杂度为log(n)log(n)log(n),因而比较容易想到二分法以往的二分法是查找到一个元素下标就得到题目的结果,但题目要求返回最小目标元素下标和最大目标元素下标,因而在二分法查找结束后还要进行下标指针的移动算法过程大致如下:Created with Raphaël 2.2.0开始特殊情况处理(数组大小为0或为1的情况...原创 2020-02-13 11:47:24 · 160 阅读 · 0 评论 -
LeetCode: 23. Merge k Sorted Lists(合并K个排序链表)
原题链接算法我采用的是分治法,在原有的Merge Two Sorted Lists的基础上进行改进自底向上先进行两个链表的合并,进而四个链表的合并…如下图所示链表1链表11链表2链表3链表12链表4链表111链表5链表5链表5链表1111AC代码(c++)/** * Definition for singly-linked list. * struct ListNode { ...原创 2020-02-12 19:37:06 · 124 阅读 · 0 评论 -
LeetCode:27. Remove Element(移除元素)
算法题目要求原地修改,可以采用双指针法定义指针i遍历数组所有元素,定义指针j用来保留剩余元素线性时间AC代码(c++)class Solution {public: int removeElement(vector<int>& nums, int val) { int len=nums.size(); int result...原创 2020-02-12 14:53:47 · 123 阅读 · 0 评论 -
LeetCode:35. Search Insert Position
原题链接算法从左到右遍历有序序列,找到和目标值相等或比目标值大的元素下标代码(c++)class Solution {public: int searchInsert(vector<int>& nums, int target) { int len=nums.size(); for(int i=0;i<len;i++) ...原创 2020-02-09 21:50:47 · 97 阅读 · 0 评论 -
LeetCode:31. Next Permutation
原题链接算法找到字典序相邻更大的序列,从序列最右端向最左端数起,直到找到一个相对更小的数,如图所示,4就是我们要找的数在4的右侧找到比4大的最小的数,如图所示,5两个数交替,为了保证字典序相邻,交换之后,对5之后的序列进行从小到大的排序ACcode(c++):class Solution {public: void nextPermutation(vector<in...原创 2020-02-09 21:33:28 · 161 阅读 · 0 评论 -
LeetCode:29. Divide Two Integers
原题链接开始直接累加,超出时间限制,看了别人的题解改用二分法class Solution {public: int divide(int dividend, int divisor) { //排除一些特殊情况 if(divisor==0) return 0; if(divisor==1) ...原创 2020-02-08 11:40:27 · 152 阅读 · 0 评论 -
LeetCode:26. Remove Duplicates from Sorted Array
原题链接官方的双指针法,很巧妙class Solution {public: int removeDuplicates(vector<int>& nums) { if(nums.size()==0) return 0; sort(nums.begin(),nums.end());//快速排序 ...原创 2020-02-08 10:49:31 · 116 阅读 · 0 评论 -
LeetCode:24.Swap Nodes in Pairs
原题链接递归法:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: Li...原创 2020-02-07 14:57:56 · 104 阅读 · 0 评论 -
LeetCode:Generate Parentheses
原题链接回朔法:class Solution {public: vector<string> res; void backtrack(string ss,int s,int e,int maxn) { if(ss.size()==maxn) { res.push_back(ss); ...原创 2020-02-06 12:14:11 · 112 阅读 · 0 评论 -
LeetCode:Merge Two Sorted Lists
原题链接合并两个链表,相对比较简单/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {publi...原创 2020-02-06 11:00:11 · 114 阅读 · 0 评论 -
LeetCode:Valid Parentheses(栈,哈希表)
字符配对问题,栈结构的典型应用直接判断方法:class Solution {public: bool isValid(string s) { if(s.empty())//假定空字符串是有效的 return true; stack<int> va; int len=s.size(); ...原创 2020-02-06 10:33:53 · 164 阅读 · 0 评论 -
Leetcode:Remove Nth Node From End of List
原题链接两次遍历(c++):/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:...原创 2020-02-05 13:18:56 · 136 阅读 · 0 评论 -
LeetCode:4Sum
原题链接双指针法AC(c++)class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int>> res;//定义返回结果 int len=n...原创 2020-02-05 11:49:42 · 88 阅读 · 0 评论 -
LeetCode:Letter Combinations of a Phone Number
哈希表+深度搜索这道题的特点是我们不知道一共有多少个数字,所以我们可以用while循环或者递归的方式解决,思路是一样的。创建哈希表是肯定的,降低时间复杂度。AC代码(c++):class Solution {public: unordered_map<char,string> m={{'2',"abc"},{'3',"def"},{'4',"ghi"}, ...原创 2020-02-04 16:03:01 · 122 阅读 · 0 评论 -
LeetCode:3Sum Closest
快排+双指针class Solution {public: int threeSumClosest(vector<int>& nums, int target) { int len = nums.size(); sort(nums.begin(),nums.end()); int res=1; int ...原创 2020-02-04 11:37:06 · 153 阅读 · 0 评论 -
LeetCode:3Sum
先是采用了哈希表的做法,但是没有解决去重复的问题哈希表做法代码(没有解决去重复的问题,未AC)class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { unordered_map<int,int> m; ve...原创 2020-02-03 14:52:30 · 113 阅读 · 0 评论 -
LeetCode:Longest Common Prefix(最长公共前缀)
原题链接class Solution {public: string longestCommonPrefix(vector<string>& strs) { int len=strs.size(); string prefix=""; int j=0; int flag=0; int m...原创 2020-02-02 11:56:04 · 116 阅读 · 0 评论 -
Roman to Integer
class Solution {public: int romanToInt(string s) { //哈希表,查询一次时间复杂度是O(1) unordered_map<string,int> m={{"I",1},{"V",5},{"X",10},{"L",50},{"C",100}, ...原创 2020-02-02 11:23:00 · 99 阅读 · 0 评论 -
LeetCode:Integer to Roman
暴力写法,非常没有水平,看看就好,日后有机会会优化class Solution {public: string intToRoman(int num) { string Roman; while(num>0) { if(num>=1000) { R...原创 2020-01-31 13:07:07 · 131 阅读 · 0 评论 -
LeetCode:Container With Most Water
贪心法,参考官方题解第二种方法class Solution {public: int maxArea(vector<int>& height) { int l=0,r=height.size()-1; int maxarea=0; while(l<r) { maxarea=...原创 2020-01-31 12:15:25 · 101 阅读 · 0 评论 -
LeetCode:Palindrome Number
水题,即使数字转化为字符串和字符串翻转这两个函数自己写也并不难class Solution {public: bool isPalindrome(int x) { string s1,s2; stringstream ss;//定义流ss ss<<x;//将数字转化为流 ss>>s1;//将流转化为...原创 2020-01-30 10:41:20 · 127 阅读 · 0 评论 -
LeetCode:String to Integer (atoi)
也属于模拟过程类型的题目class Solution {public: int myAtoi(string str) { if(str.empty()) return 0; int len = str.length(); map<char,int> convert; convert['1...原创 2020-01-29 21:01:02 · 92 阅读 · 0 评论 -
LeetCode:Reverse Integer
题目链接这是目前为止刷过LeetCode里最简单的题目了,主要注意环境的存储的数字范围是[−2^31, 2^31 −1],即在计算过程中数字的范围必须在[-2147483648,2147483647]内。AC代码:class Solution {public: int reverse(int x) { int tmp=x; int y=0;//存...原创 2020-01-29 17:35:19 · 177 阅读 · 0 评论 -
LeetCode:ZigZag Conversion
属于模拟过程类型的题目,和之前做的CCF认证题目碰撞的小球比较像,同样设定了一个变量来模拟方向。d=1表示向下,d=-1表示向上。class Solution {public: string convert(string s, int numRows) { if(numRows==1)//如果给定行数为1则直接返回 return s; ...原创 2020-01-28 18:45:38 · 105 阅读 · 0 评论 -
LeetCode:Longest Palindromic Substring
暴力解法,果不其然超时暴力解法程序(c++)bool isShorter(const string &s1, const string &s2)//自定义按照字符串大小降序排序{ return s1.size() > s2.size();}class Solution {public: string longestPalindrome(string s)...原创 2020-01-28 17:29:04 · 144 阅读 · 0 评论 -
LeetCode:Median of Two Sorted Arrays
思考:因为题目有时间复杂度的要求,所以题目的难度等级提升了。主要需要注意的问题是如何实现对数级的时间复杂度。主要解法是参考LeetCode的官方题解,可以看做是二分法的改进。AC代码(c++)class Solution {public: double FindMedian(vector<int>& nums1,vector<int>& num...原创 2020-01-28 11:31:57 · 96 阅读 · 0 评论 -
Longest Substring Without Repeating Characters
思考:通过自建哈希集合的方法来实现滑动窗口未优化:class MyHashSet {public: /** Initialize your data structure here. */ vector<bool> hash; MyHashSet() { hash = vector<bool>(1000001, false); ...原创 2020-01-27 13:27:47 · 158 阅读 · 0 评论 -
LeetCode错误
=================================================================29ERROR: AddressSanitizer: alloc-dealloc-mismatch (malloc vs operator delete) on 0x602000000110#0 0x7fb4c142f0d8 in operator delete(v...原创 2020-01-21 16:43:55 · 1900 阅读 · 0 评论 -
Leetcode: Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same ...原创 2020-01-21 11:58:50 · 178 阅读 · 0 评论