腾讯精选50
liudongshizhang
这个作者很懒,什么都没留下…
展开
-
多线程打印循环打印ABC、多线程打印奇偶数
多线程打印循环打印ABC(10次)#include <iostream>#include <thread>#include <condition_variable>std::mutex mtx;std::condition_variable cv;int ready = 0;void PrintString_1(){ std::unique_lock<std::mutex> lk(mtx); int cnt =原创 2020-08-26 18:35:39 · 160 阅读 · 0 评论 -
300-最长上升子序列
class Solution {public: int lengthOfLIS(vector<int>& nums) { if (nums.size() < 1) { return 0; } int maxLength = 1; vector<int>dp(nums.size(), 1); for (int i = 1; i < nums.size(.原创 2020-08-26 13:42:24 · 75 阅读 · 0 评论 -
222-完全二叉树的节点个数
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: int countNodes(TreeNode* root).原创 2020-08-24 11:45:23 · 121 阅读 · 0 评论 -
679-24点游戏
class Solution {public: bool judgePoint24(vector<int>& nums) { vector<double>arr(nums.begin(), nums.end()); return helper(arr); } bool helper(vector<double>&arr) { int length = arr.size(); .原创 2020-08-22 10:32:17 · 233 阅读 · 0 评论 -
198-打家劫舍(动态规划)
class Solution {public: int rob(vector<int>& nums) { int length = nums.size(); if (length <= 1) { if (length == 0) { return 0; } else { return nums[0]; .原创 2020-08-20 10:23:16 · 86 阅读 · 0 评论 -
152-乘积最大子数组
class Solution {public: int maxProduct(vector<int>& nums) { int a = 1, maxNum = nums[0]; for (int &num : nums) { a = a * num; if (maxNum < a) { maxNum = a; } .原创 2020-08-20 10:07:32 · 72 阅读 · 0 评论 -
414-第三大的数
class Solution {public: int thirdMax(vector<int>& nums) { if (nums.size() == 1) { return nums[0]; } if (nums.size() == 2) { return max(nums[0], nums[1]); } long n1 = LONG_MIN;.原创 2020-08-18 15:00:33 · 98 阅读 · 0 评论 -
1143-最长公共子序列的长度和最长公共子序列
/* * 最长公共子序列-动态规划 * dp[i][j]表示str1前i子串和str2前j子串的最长公共子序列长度 * dp[i][j]取决于dp[i-1][j], dp[i][j-1], dp[i-1][j-1] * 时间复杂度O(MN) 空间复杂度O(MN) */class Solution {public: // 最长公共子序列长度 int longestCommonSubsequence(string text1, string text2) { if.原创 2020-08-18 14:15:43 · 193 阅读 · 0 评论 -
42-接雨水(单调递减栈)
class Solution {public: int trap(vector<int>& height) { if (height.size() <= 2) { return 0; } int maxIndex = 0, maxNum = height[0]; for (int i = 1; i < height.size(); i++) { if (.原创 2020-08-16 11:58:49 · 164 阅读 · 0 评论 -
200-岛屿的数量
class Solution {public: int numIslands(vector<vector<char>>& grid) { int ans = 0; for (int i = 0; i < grid.size(); i++) { for (int j = 0; j < grid[0].size(); j++) { if (grid[i][j] == ..原创 2020-08-15 09:27:55 · 99 阅读 · 0 评论 -
470-用Rand7()实现Rand10()
// The rand7() API is already defined for you.// int rand7();// @return a random integer in the range 1 to 7class Solution {public: int rand10() { int x = ~(1 << 31); // max int // 这里40是10的倍数中小于且最接近与 7 * 7的数 while (x.原创 2020-08-13 15:02:05 · 216 阅读 · 0 评论 -
328-奇偶链表(按链表结点编号的奇偶性分割链表)
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next.原创 2020-08-13 14:51:42 · 187 阅读 · 0 评论 -
leetcode41-缺失的第一个正数
class Solution {public: int firstMissingPositive(vector<int>& nums) { int i = 0, n = nums.size(); while (i < n) { if (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) { .原创 2020-08-13 10:26:42 · 82 阅读 · 0 评论 -
530-二叉搜索树的最小绝对差
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: int getMinimumDifference(TreeN.原创 2020-08-09 20:38:05 · 62 阅读 · 0 评论 -
238-除自身以外数组的乘积
class Solution {public: vector<int> productExceptSelf(vector<int>& nums) { int length = nums.size(); int leftCur = 1, rightCur = 1; vector<int>leftArr; for (int i = 0; i < length; i++) { .原创 2020-08-08 11:50:22 · 67 阅读 · 0 评论 -
剑指offer24-反转链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { if (head == NULL) r.原创 2020-08-06 11:20:40 · 86 阅读 · 0 评论 -
235-二叉搜索树的最近公共祖先
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode* lowestCommonAncest..原创 2020-08-06 10:59:57 · 71 阅读 · 0 评论 -
231-2的幂
解法一:class Solution {public: bool isPowerOfTwo(int n) { if (n < 1) return false; if (n == 1) return true; while (n % 2 == 0) { n /= 2; if (n == 2 || n == 1) { return true; .原创 2020-08-06 10:52:11 · 67 阅读 · 0 评论 -
230-二叉搜索树中第K小的元素
递归版:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) .原创 2020-08-06 10:39:54 · 206 阅读 · 0 评论 -
1115-交替打印FooBar和交替ABC
class FooBar {private: int n; mutex mtx; condition_variable cv; int flag;public: FooBar(int n) { this->n = n; flag = 0; } void foo(function<void()> printFoo) { for (int i = 0; i <.原创 2020-08-05 09:57:51 · 143 阅读 · 0 评论 -
215-数组中第K个最大元素(快排思想)
class Solution {public: int findKthLargest(vector<int>& nums, int k) { int result = findMaxK(nums, 0, nums.size() - 1, k); return result; } int findMaxK(vector<int>&nums, int left, int right, int k) { .原创 2020-08-03 10:36:28 · 106 阅读 · 0 评论 -
169-多数元素(数组中出现次数超过一半的数字)
class Solution {public: int majorityElement(vector<int>& nums) { if (nums.size() == 1) return nums[0]; int curNum = nums[0]; int count = 1; for (int i = 1; i < nums.size(); i++) { if (count == .原创 2020-08-03 09:38:21 · 127 阅读 · 0 评论 -
160-相交链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { .原创 2020-08-01 13:03:29 · 77 阅读 · 0 评论 -
148-排序链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* sortList(ListNode* head) { if (head == NULL || he.原创 2020-08-01 11:14:37 · 79 阅读 · 0 评论 -
146-LRU缓存机制
class LRUCache {public: LRUCache(int capacity) { cap = capacity; } int get(int key) { if (mp.find(key) != mp.end()) { int res = (*mp[key]).second; l.erase(mp[key]); l.push_front(make_pa.原创 2020-07-31 11:32:52 · 136 阅读 · 0 评论 -
142-环形链表II(返回环形链表的入口)
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *detectCycle(ListNode *head) { ListNode *meetNode .原创 2020-07-31 10:52:55 · 86 阅读 · 0 评论 -
124-二叉树中的最大路径和
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: int result; int maxPathSu..原创 2020-07-30 11:44:42 · 65 阅读 · 0 评论 -
104-二叉树的最大深度
递归解法class Solution {public: int maxDepth(TreeNode* root) { if (root == NULL) { return 0; } int left = maxDepth(root->left); int right = maxDepth(root->right); return left > right ? left + .原创 2020-07-30 10:12:39 · 82 阅读 · 0 评论 -
89-格雷编码
/** 关键是搞清楚格雷编码的生成过程, G(i) = i ^ (i/2); 如 n = 3: G(0) = 000, G(1) = 1 ^ 0 = 001 ^ 000 = 001 G(2) = 2 ^ 1 = 010 ^ 001 = 011 G(3) = 3 ^ 1 = 011 ^ 001 = 010 G(4) = 4 ^ 2 = 100 ^ 010 = 110 G(5) = 5 ^ 2 = 101 ^ 010 = 111 G(6) = 6 ^ 3 = 110 ^ 011 = 1.原创 2020-07-30 09:59:35 · 165 阅读 · 0 评论 -
88-合并两个有序数组
class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int length = m + n - 1; int i = m - 1, j = n - 1; while (i >= 0 && j >= 0) { if (nums1[i].原创 2020-07-30 09:45:17 · 60 阅读 · 0 评论 -
78-子集(数组的组合)
class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>>res; vector<int>tempArr; res.push_back(tempArr); if (nums.empty()) return res; .原创 2020-07-29 11:42:39 · 111 阅读 · 0 评论 -
62-不同路径(机器人从矩阵的左上角走到右下角的路径)
class Solution {public: int uniquePaths(int m, int n) { if(m == 1 || n == 1) return 1; vector<vector<int>>arr(m, vector<int>(n, 0)); for (int i = 0; i < m; i++) { arr[i][0] = 1; } .原创 2020-07-29 11:04:31 · 289 阅读 · 0 评论 -
61-旋转链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* rotateRight(ListNode* head, int k) { if (head == .原创 2020-07-27 12:49:05 · 79 阅读 · 0 评论 -
59-螺旋矩阵II(顺时针排列为一个正方形矩阵)
class Solution {public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>>res(n, vector<int>(n, 0)); int c = 1, i = 0; while (c <= n * n) { // 从左到右一行 for (i.原创 2020-07-27 11:23:22 · 299 阅读 · 0 评论 -
54-螺旋矩阵(顺时针打印矩阵)
class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int>res; spiralOrder(matrix, res); return res; } void spiralOrder(vector<vector<int>>&ma.原创 2020-07-27 11:07:38 · 147 阅读 · 0 评论 -
53-最大子序和
class Solution {public: int maxSubArray(vector<int>& nums) { if (nums.empty()) return 0; if (nums.size() == 1) return nums[0]; int curSum = nums[0], maxSum = nums[0]; for (int i = 1; i < nums.size(); i++) .原创 2020-07-27 10:41:10 · 52 阅读 · 0 评论 -
46-全排列
class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>>res; if (nums.empty()) return res; if (nums.size() == 1) { return vector<vector<in.原创 2020-07-27 10:11:38 · 181 阅读 · 0 评论 -
43-字符串相乘
class Solution {public: string multiply(string num1, string num2) { if (num1[0] == '0' || num2[0] == '0') { return "0"; } vector<string>vec; string result = "0"; for (int i = num1.siz.原创 2020-07-25 14:36:22 · 87 阅读 · 0 评论 -
33-搜索旋转排序数组
class Solution {public: int search(vector<int>& nums, int target) { int index = -1; if (nums.empty()) { return -1; } int left = 0, right = nums.size() - 1; while (left <= right) { .原创 2020-07-25 12:04:54 · 67 阅读 · 0 评论 -
26-删除排序数组中的项
class Solution {public: int removeDuplicates(vector<int>& nums) { if (nums.size() < 2) return nums.size(); int j = 0; for (int i = 1; i < nums.size(); i++) { if (nums[j] != nums[i]) { .原创 2020-07-25 11:21:37 · 61 阅读 · 0 评论