LeetCode
zhaohoutao
这个作者很懒,什么都没留下…
展开
-
LeetCode-5 最长回文子串
使用动态规划方法,用到了类似滑动窗口的方法进行遍历原创 2019-04-26 00:32:30 · 67 阅读 · 0 评论 -
LeetCode-8 字符串转换整数(atoi)
class Solution {public:long myAtoi(string str) { //面试题中经常会考到的 int len = str.size(); int first = false; int flag = 0; long result = 0; if (len == 0) return 0; int i; for (i = 0; i<...原创 2019-04-26 23:54:32 · 88 阅读 · 0 评论 -
LeetCode-2 两数相加
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: List...原创 2019-04-27 01:30:28 · 94 阅读 · 0 评论 -
LeetCode-91 解码方法
本人的解法:int numDecodings(string s) { //使用动态规划的方法: //缺陷是使用了十位与个位数字得到的结果进行比较 int len = s.size(); vector<int> dp(len + 1, 0); dp[0] = 1; for (int i = 0; i<len; ++i) { if (i == 0) { ...原创 2019-05-01 22:14:56 · 107 阅读 · 0 评论 -
LeetCode-17 电话号码的字母组合
思路:使用回溯法DFS。class Solution {public: void digui(vector<string> &result, int depth, string digits, string &ss, const int len, map<int, string> phone_num){ if...原创 2019-05-01 22:58:41 · 96 阅读 · 0 评论 -
LeetCode-120三角形最小路径和
class Solution {public: int minimumTotal(vector<vector<int>>& triangle) { //使用动态规划 int len=triangle.size(); //vector<int > dp(len); vector&l...原创 2019-05-02 01:04:02 · 101 阅读 · 0 评论 -
LeetCode-11 盛最多水的容器
思路:使用双指针的方法,分别从头和尾进行计算,每次寻找最小的那个深度,因为木桶效应最小的影响总体的结果。然后,将最小的深度的那个指针进行移动,当两个指针重叠的时候结束。class Solution {public: int maxArea(vector<int>& height) { //这里使用双指针的方式 int len=hei...原创 2019-04-27 23:08:01 · 97 阅读 · 0 评论 -
LeetCode-13 罗马数字转整数
思路:首先利用map将每一种罗马数字和整数映射关系记录下来。然后对于整数,首先每次从map最大的Key开始遍历,直到循环结束为止。class Solution {public: string intToRoman(int num) { //转罗马数字 //将所有映射放入map中,因为map的Key是按照从小到大排列的,所以遍历的时候使用rbegin(...原创 2019-04-28 00:00:02 · 115 阅读 · 0 评论 -
LeetCode-78 子集
思路:两种方法1.使用位运算,2.使用回溯法。1、使用位运算class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { //使用位运算的技巧 vector<vector<int>> result...原创 2019-04-28 00:23:59 · 93 阅读 · 0 评论 -
LeetCode-19删除链表的倒数第n个节点
思路:1.使用双指针的形式。2.如果删除的话,需要得到删除节点的前驱节点,这样需要修改对应的i的上限为n+1(如果是求倒数第n个节点,上限范围为n)。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int...原创 2019-05-02 22:45:52 · 81 阅读 · 0 评论 -
LeetCode-20 有效的括号
LeetCode-20 有效的括号思路:使用栈进行判断,如果栈不为空并且栈顶元素和当前遍历的元素可以形成一个括号可以把栈顶元素出栈。class Solution {public: bool isValid(string s) { //使用栈的方式 stack<char> zhan; for(auto ss:s) ...原创 2019-05-02 23:57:07 · 75 阅读 · 0 评论 -
LeetCode-1 两数之和
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { //两个数的和 vector<int> numss=nums; sort(nums.begin(),nums.end()); i...原创 2019-04-29 00:23:47 · 76 阅读 · 0 评论 -
LeetCode刷题
利用map容器进行统计原创 2019-04-24 23:42:56 · 78 阅读 · 0 评论 -
LeetCode-15 三数之和
思路:先排序,主要使用双指针的方式,进行元素的选择。最重要的是需要使用while对重复元素的筛选。class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { //最接近的三个数 sort(nums.begin(), nums.end()); in...原创 2019-04-30 00:05:52 · 176 阅读 · 0 评论 -
LeetCode-16 最近的三数之和
class Solution {public: int threeSumClosest(vector<int>& nums, int target) { //也是用了一些先排序然后进行计算 sort(nums.begin(), nums.end()); int len = nums.size(); int zhongjian = 1e9; int resul...原创 2019-05-01 00:14:58 · 107 阅读 · 0 评论 -
LeetCode-45 跳跃游戏
跳跃游戏class Solution {public: int jump(vector<int>& nums) { //总是可以到达数组的最后一个位置 //贪心算法的规律 vector<int> index; int len = nums.size(); ...原创 2019-07-01 15:21:48 · 193 阅读 · 0 评论 -
LeetCode-452 用最少数量的箭引爆气球
用最少数量的箭引爆气球class Solution {public: static bool cmp(vector<int>& a, vector<int>& b) { return a[0]<b[0]; } int findMinArrowShots(vector<vector<int>>& po...原创 2019-07-01 16:36:35 · 322 阅读 · 0 评论 -
LeetCode-78 子集
子集class Solution {public:vector<vector> subsets(vector& nums) {//使用位运算的技巧/*vector<vector> result;int len=nums.size();int fanwei=pow(2,len);for(int i=0;i<fanwei;++i){vect...原创 2019-07-01 21:09:58 · 156 阅读 · 0 评论 -
LeetCode-90 子集2
子集2class Solution {public: void huisu(int i, vector<int> nums, vector<int> &temp, set<vector <int>> &shuchu){ for (int j = i; j<nums.size(); ++j) { t...原创 2019-07-01 21:11:40 · 142 阅读 · 0 评论 -
LeetCode-22 括号生成
括号生成class Solution {public: vector<string> result; vector<string> generateParenthesis(int n) { //括号生成使用的回溯法 huisu(n,n,n,""); return result; } voi...原创 2019-07-01 23:22:49 · 86 阅读 · 0 评论 -
LeetCode-200 岛屿数量
岛屿数量使用深度遍历搜索class Solution {public: void DFS(vector<vector<char>>& grid, vector<vector<int>> &flag, int x, int y){ int col = grid.size(); int row = grid[0].s...原创 2019-07-07 20:12:47 · 139 阅读 · 0 评论 -
LeetCode-96 不同的二叉搜索树
不同的二叉搜索树class Solution {public: int numTrees(int n) { int* a=new int[n+1]; a[0]=1; a[1]=1; //long result=0; //a[n]=a[i]*a[n-1-i];所有i=1.。。。n-1 for...原创 2019-07-07 23:22:15 · 71 阅读 · 0 评论 -
LeetCode-315 计算右侧小于当前元素的个数
计算右侧小于当前元素的个数class Solution {public: void merge_sort(vector<pair<int, int>>& Vec, vector<int> &count){ if (Vec.size()<2) return; int low = 0; int high = Vec.size...原创 2019-07-02 16:30:40 · 172 阅读 · 0 评论 -
LeetCode-29 两数相除
两数相除class Solution {public: int divide(int dividend, int divisor) { //使用的是位运算,使用位运算的方法,不停地进行相应的减法操作 long beichushu = labs(dividend); long chushu = labs(divisor); //int flag = 1; long result...原创 2019-07-08 12:49:58 · 103 阅读 · 0 评论 -
LeetCode-113 路径总和 II
路径总和2代码/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}...原创 2019-07-02 17:40:47 · 76 阅读 · 0 评论 -
LeetCode-236 二叉树的最近公共祖先
二叉树的最近公共祖先class Solution {public: vector<TreeNode*> path; vector<vector<TreeNode*>> result; int flag_1 = false; int flag_2 = false; TreeNode* lowestCommonAncestor(TreeNode* r...原创 2019-07-02 19:14:39 · 96 阅读 · 0 评论 -
LeetCode-114 二叉树展开为链表
二叉树展开为链表/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} ...原创 2019-07-02 21:28:50 · 96 阅读 · 0 评论 -
LeetCode-199 二叉树的右视图
二叉树的右视图/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * };...原创 2019-07-02 22:28:57 · 119 阅读 · 0 评论 -
LeetCode-66 加一
加一class Solution {public: vector<int> plusOne(vector<int>& digits) { int len=digits.size(); vector<int> result;//倒着来 vector<int> result_1;//正...原创 2019-07-08 18:07:06 · 78 阅读 · 0 评论 -
LeetCode-67 二进制求和
二进制求和原创 2019-07-08 19:15:54 · 114 阅读 · 0 评论 -
LeetCode-22 有效的括号
有效的括号class Solution {public: bool isValid(string s) { //使用栈的方式进行相应的计算操作的 stack<char> sT;//对于有栈的程序一定要判断栈是否为空,可能是结束条件呢 if(s.size()==0) return true; ...原创 2019-07-08 21:08:04 · 80 阅读 · 0 评论 -
LeetCode-92 反转链表2
翻转链表2一共需要四个关键节点,要反转的第一个节点的前驱节点,要反转的第一个节点,要反转的最后一个节点,最后一个节点的后一个节点主要思路就是先求得前两个关键节点,然后需要求出翻转的链表的长度,进行翻转的过程,这里的技巧跟单纯翻转单链表一样,不多说了。注意:当需要翻转的节点从头结点开始的话,就是需要特殊处理。代码:/** * Definition for singly-linked...原创 2019-06-27 22:13:35 · 171 阅读 · 0 评论 -
LeetCode-160 链表相交
链表相交/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNo...原创 2019-06-27 22:36:18 · 80 阅读 · 0 评论 -
LeetCode-38 报数
报数class Solution {public: string countAndSay(int n) { //使用的是什么算法呢 if (n == 1) return "1"; if (n == 2) return "11"; vector<string> a(n + 1); a[0]="0"; a[1] = "1"; a[...原创 2019-07-08 23:43:12 · 75 阅读 · 0 评论 -
LeetCode-142 链表环
链表相交/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNo...原创 2019-06-28 09:43:25 · 124 阅读 · 0 评论 -
LeetCode-33 搜索旋转排序数组
搜索旋转排序数组class Solution {public: int search(vector<int>& nums, int target) { //旋转数组使用基本的二分查找算法 int low=0; int high=nums.size()-1; int mid; while...原创 2019-07-04 10:44:03 · 92 阅读 · 0 评论 -
LeetCode-169 求众数
求众数加入了一个判断得到的元素到底是不是众数,也就是前面得到的数不一定是众数。第一种方法:class Solution {public: bool panduan(vector<int> &nums, int number) { int count = 0; for (int i = 0; i<nums.size(...原创 2019-07-09 21:28:15 · 117 阅读 · 0 评论 -
LeetCode-86 分割链表
分割链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNo...原创 2019-06-28 22:39:32 · 117 阅读 · 0 评论 -
LeetCode-23 合并k个排序链表
合并k个排序链表使用暴力求解使用分治法,递归/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solutio...原创 2019-06-28 23:37:39 · 102 阅读 · 0 评论 -
LeetCode-24 两两交换链表中的节点
两两交换链表中的节点对于链表题的注意事项:1.对于跳跃型的链表需要判断node!=NULL&&node->next!=NULL2.操作链表的时候需要的时候一定要要拷贝一份头指针3.需要拷贝一下下一个节点,因为可能会因为删除next指针导致断链了/** * Definition for singly-linked list. * struct ListNode ...原创 2019-07-09 22:55:50 · 71 阅读 · 0 评论