自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 Leetcode 46. 全排列

使用next_permutation函数class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> ans; sort(nums.begin(), nums.end()); do { ans.p

2018-04-29 09:27:48 216 4

原创 Leetcode 45. 跳跃游戏 II

记录n{0…}跳的最大长度,当最大长度大于等于最后位置时,n就是所求值class Solution {public: int jump(vector<int>& nums) { int L = 0, R = 0, n = 0; while (R < nums.size() - 1) { int M = R; f

2018-04-29 09:27:16 257

原创 Leetcode 44. 通配符匹配

和leetcode10. 正则表达式匹配形似 动态规划bool dp[10005][10005];class Solution {public: bool isMatch(string s, string p) { dp[0][0] = true;//s无字符,p无字符 dp[0][1] = p[0] == '*';//s无字符,p有一个字符

2018-04-29 09:11:26 587

原创 Leetcode 43. 字符串相乘

计算步骤: 123 *456 A[0]=3*6=18 A[1] =2*6+3*5=27 A[2] =2*5+3*4+6*1=28 A[3]=1*5+4*2=13 A[4]=1*4=4 A[5]=A[6]=…=0 A[0]=8 A[1]=27+1=28 A[1]=8 A[2]=28+2=30 A[2]=0 A[3]=13+3=16 A[3]=6 A[4]

2018-04-28 10:54:38 579

原创 Leetcode 42. 接雨水

维护每个位置的左侧最大值L{}和右侧最大值R{} 若R[i]>height[i]且L[i]>height[i],k位置积水,且积水量为min(R[i], L[i]) - height[i]const int maxn = 100005;class Solution {public: int L[maxn], R[maxn]; int trap(vector<int>& heig

2018-04-28 09:27:11 487 2

原创 Leetcode 41. 缺失的第一个正数

借用原数组,使原数组尽量变成nums[i]=i+1的形式 如果遇到重复元素,则把其中一个变成0【不能构成的形式】 保证遍历到k位置nums{0…k}要么是nums[i]=i+1,要么nums[i]不存在对应的形式class Solution {public: int firstMissingPositive(vector&lt;int&gt;&amp; nums) { f...

2018-04-28 09:14:05 234

原创 Leetcode 40. 组合总和 II

和Leetcode39一样,只是从原来的无限个一样的数到有限个一样的数class Solution {public: vector<vector<int>> ans; vector<int> val; void dfs(vector<int>& candidates, int target, int index) { if (target == 0) {

2018-04-27 16:18:24 241 2

原创 Leetcode 39. 组合总和

暴力深搜class Solution {public: vector<vector<int>> ans; vector<int> val; void dfs(vector<int>& candidates, int target, int index) { if (target == 0) { ans.push_back(val);

2018-04-27 16:01:31 176

原创 Leetcode 38. 报数

难在理解题意,n+1个数是对第n个数的报数 比如11124445,报数就是3个1一个2三个4一个5【31123415】class Solution {public: string countAndSay(int n) { string s = "1", t; while (--n) { char val = s[0]; int n

2018-04-26 11:47:27 165

原创 Leetcode 37. 解数独

暴力可过class Solution {public: bool hang[9][9] = {}, lie[9][9] = {}, ge[9][9] = {}; bool solve(vector<vector<char>>& board) { for (int i = 0; i<9; ++i) for (int j = 0; j < 9; ++

2018-04-26 10:59:07 484 3

原创 Leetcode 36. 有效的数独

按题意,暴力解决class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { bool hang[9][9] = {}, lie[9][9] = {}, ge[9][9] = {}; char x; for (int i = 0; i < 9; ++i) {

2018-04-25 10:48:27 492

原创 Leetcode 35. 搜索插入位置

(l,r]找lowclass Solution {public: int searchInsert(vector<int>& nums, int target) { vector<int> ans; int l = -1, r = (int)nums.size()-1; while (l < r) { int mid = (l + r+1) >> 1

2018-04-25 10:40:57 186

原创 Leetcode 34. 搜索范围

两次二分查找,第一次找low,第二次找high [l,r)找high和(l,r]找lowclass Solution {public: vector<int> searchRange(vector<int>& nums, int target) { vector<int> ans; if (nums.empty()) { ans.p

2018-04-24 09:47:22 482

原创 Leetcode 33. 搜索旋转排序数组

序列为两个升序,给后面的升序(都小于第一个元素)加一个权值,使序列变为一个升序,然后二分查找class Solution {public:#define val(x) (x<nums[0]? x+0x3f3f3f3f:x) int search(vector<int>& nums, int target) { int l = 0, r = nums.size() - 1;

2018-04-24 09:25:22 1585 7

原创 Leetcode 32. 最长有效括号

每次右括号的时候, 如果匹配判断以这个右括号为右端的最大长度 如果不匹配,判断以右括号左边字符为右端的最大长度 答案就是这些最大长度的最大值class Solution {public: int longestValidParentheses(string s) { int ans = 0; vector<int> A; A.push_

2018-04-23 08:34:30 156

原创 Leetcode 31. 下一个排列

调用函数class Solution {public: void nextPermutation(vector<int>& nums) { next_permutation(nums.begin(), nums.end()); }};自己写class Solution {public: void nextPermutation(vector<int>&

2018-04-23 08:20:28 318

原创 Leetcode 30. 与所有单词相关联的字串

利用kmp记录words中每一个字符串在s中的所有匹配位置 为防止超内存,对words进行排序,并进行编号(相同的字符串为同一id),并记录每一id的出现次数 然后暴力搜索s串每一个位置是否符合要求class Solution {public: int nextval[100005]; vector<int> A[100005]; void get_nextval(st

2018-04-22 10:56:47 1752

原创 Leetcode 29. 两数相除

利用移位和减法做 首先被除数-除数的2^t倍【使被除数符号不发生变化的最高t】,把2^t保存 然后新的被除数-…… 为防止溢出,都用负数进行运算class Solution {public: const int M = 0x7fffffff, m = 0x80000000; int divide(int dividend, int divisor) { if

2018-04-22 09:38:09 473

原创 Leetcode 28. 实现strStr()

KMP 注意nextval数组的长度,如果过短会执行错误(数组越界)class Solution {public: int nextval[100005]; void get_nextval(string s) { int i = 0, x = -1; nextval[i] = x; while (i < s.size()) {

2018-04-21 09:29:05 227

原创 Leetcode 27. 移除元素

简单题class Solution {public: int removeElement(vector<int>& nums, int val) { int ans = -1; if (nums.empty()) return 0; for (auto x : nums) if (x != val) nums[++an

2018-04-21 09:17:51 206

原创 Leetcode 26. 删除排序数组中的重复项

简单题class Solution {public: int removeDuplicates(vector<int>& nums) { int ans = 0; if (nums.empty()) return 0; for (auto x : nums) if (x != nums[ans]) nums[++ans

2018-04-20 10:09:39 108

原创 Leetcode 25. k个一组翻转链表

指针的next反转一下,再把链表接起来 如1->2->3->4->5反转2->3->4的时候 先1 2<-3<-4 5 再1->4和2->5/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x),

2018-04-20 09:52:57 1170

原创 Leetcode 24. 两两交换链表中的节点

pl代表左右交换,左的前驱结点指针,pr右的前驱结点指针,r就是右结点指针/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/class Soluti

2018-04-18 13:38:00 245

原创 Leetcode 23. 合并K个排序链表

和Leetcode 21. 合并两个有序链表类似 用堆排序每次选一个最小的,然后把这个最小的下一个元素加入堆中(可用priority_queue)/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x

2018-04-18 13:14:04 315

原创 Leetcode 22. 括号生成

暴力深搜class Solution {public: vector<int> sta; vector<string> ans; string s; void dfs(int n, int M) { if (!n) { ans.push_back(s); for (int i = s.size(); i

2018-04-18 12:09:22 116

原创 Leetcode 21. 合并两个有序链表

/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/class Solution {public: ListNode * mergeTwoL

2018-04-18 11:56:10 114

原创 Leetcode 20. 有效的括号

维护一个栈,然后……class Solution {public: bool isValid(string s) { vector<int> A; for (auto x : s) { switch (x) { case '(': A.push_back(x);

2018-04-17 10:02:20 225

原创 Leetcode 19. 删除链表的倒数第N个节点

简单题/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/class Solution {public: ListNode * remove

2018-04-17 09:50:16 163

原创 PAT 1022. Werewolf (35)

暴力……我还想再优化点,试着提交一下居然过了#include<iostream>#include<vector>#include<cmath>using namespace std;#pragma warning(disable:4996)int N, M, L, A[105], lie, lie_wolf, lie2, is_wolf[105];vector<int> ans, rel

2018-04-16 22:19:44 1789

原创 Leetcode 18. 四数之和

和三数之和类似……class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<int> tmp; vector<vector<int>> ans; sort(nums.begin(), nums.end());

2018-04-16 17:34:26 221

原创 Leetcode 17. 电话号码的字母组合

简单题,暴力枚举即可class Solution {public: vector<string> ans; string s[8] = { "abc","def","ghi","jkl","mno","pqrs","tuv","wxyz" }; void dfs(int index, string &str, string &digits) { if (in

2018-04-16 17:18:40 1071

原创 Leetcode 16. 最接近的三数之和

和Leetcode15题类似class Solution {public: int threeSumClosest(vector<int>& nums, int target) { int ans = 99999999 + target, kk; sort(nums.begin(), nums.end()); for (int i = 0;

2018-04-15 16:48:15 155

原创 Leetcode 15. 三数之和

注意有相同的数出现的情况,需要跳过class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<int> tmp; vector<vector<int>> ans; sort(nums.begin(), nums.end());

2018-04-15 11:09:46 477

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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