- 博客(8)
- 资源 (5)
- 收藏
- 关注
原创 Leetcode|二叉树的属性DFS回溯|113. 路径总和 II
1 DFS回溯/** * 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(nullp..
2021-08-30 15:03:31 175
原创 Leetcode|队1出栈+队2中转|225. 用两个队列实现栈
《225. 用两个队列实现栈》1 队1出栈+队2中转两个队列q1和q2,新入栈的元素先放入q2,然后将q1中元素逐个入队q2,再交换2队列即可class MyStack {public: queue<int> q1, q2; /** Initialize your data structure here. */ MyStack() { } /** Push element x onto stack. */ void pu
2021-08-30 11:39:02 246
原创 Leetcode|入栈+出栈实现队列|剑指 Offer 09. 用两个栈实现队列
1 入栈+出栈实现队列一个栈用于入队,一个栈用于出队操作class CQueue {public: stack<int> stk1, stk2; // stk1用于入队,stk2用于出队 CQueue() { while (!stk1.empty()) stk1.pop(); while (!stk2.empty()) stk2.pop(); } void appendTail(int value) {.
2021-08-30 10:28:57 240
原创 Leetcode|二分+缩小左右区间去重|81. 搜索旋转排序数组 II
1 二分+缩小左右区间去重对于nums[left] == nums[mid] == nums[right]情况,如nums=[3,1,2,3,3,3,3], target=2nums[0] == nums[3] == nums[6] == 3,无法判断该搜索左侧区域还是右侧区域,一个简单的想法是同时缩小左右侧区域[left, right] => [left + 1, right - 1]nums=[3,1,2,3,3,3,3] => nums=[1,2,3,3,3]class .
2021-08-12 13:36:17 203 2
原创 Leetcode|数组上下翻转+主对角线翻转|48. 旋转图像
1 数组上下翻转+主对角线翻转class Solution {public: void rotate(vector<vector<int>>& matrix) { int size = matrix.size(); // 1.上下翻转 for (int j = 0; j < size; j++) for (int i = 0; i < size / 2; i++) ..
2021-08-12 11:17:36 481
原创 Leetcode|取余+数组翻转|189. 旋转数组
1 数组翻转—O(1)O(1)O(1)空间复杂度,O(n)O(n)O(n)时间复杂度class Solution {public: void reverse(vector<int>& nums, int left, int right) { while (left < right) { swap(nums[left], nums[right]); left++; right--; } .
2021-08-12 10:53:03 271
原创 Leetcode|区间首尾元素大小判断成序+二分查找|33. 搜索旋转排序数组
1 旋转数组的二分查找在二分搜索基础上,判断左右区间中的收尾元素大小,来判断是否成序,不成序或target在这个区间则搜索,否则搜索另外一个区间class Solution {public: int search(vector<int>& nums, int target) { int size = nums.size(); int left = 0, right = size - 1; while (left <.
2021-08-11 00:03:57 206
原创 Leetcode|从后向前找首对升序对再交换右侧数并升序|31. 下一个排列
两遍扫描以求 12385764 的下一个排列为例:class Solution {public: void nextPermutation(vector<int>& nums) { int left = 0, right = 0, next = INT_MAX; int size = nums.size(); // 1.找到连续升序的左索引left for (int i = size - 1; ..
2021-08-02 17:51:48 219
Jclasslib_win64bit
2018-12-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人