自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [Leetcode] 力扣46:全排列

思路回溯算法的典型题,将整个过程想象成一颗树的遍历。1.选择路径2.递归1-2-3过程3.退回选择用数组维护遍历过的元素,数组左侧遍历过,右侧没有遍历过class Solution {public: void dfs (vector<vector<int>>& res, vector<int>& temp, int now, int n) { if (now == n) { res.push_.

2021-01-29 13:59:01 115

原创 [Leetcode239] 力扣239:滑动窗口的最大值

class Solution {public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { int n = nums.size(); deque<int> q; vector<int> res; for (int i = 0; i < k; ++i) { while (!q.em.

2021-01-28 22:10:47 108

原创 [Leetcode724] 力扣724:寻找数组的中心索引

思路有关子数组和的问题可以思考能否用前缀和方法解决class Solution {public: int pivotIndex(vector<int>& nums) { int sum = 0; for (int& n : nums) { sum += n; } int preSum = 0; for (int i = 0; i < nums.size().

2021-01-28 11:52:45 75

原创 [Leetcode] 力扣628:三个数的最大乘积

思路一开始只考虑排序,有可能两个小的负数之积更大,一次线性扫描,找两个最小的和三个最大的即可class Solution {public: int maximumProduct(vector<int>& nums) { int min1 = INT_MAX, min2 = INT_MAX; int max1 = INT_MIN, max2 = INT_MIN, max3 = INT_MIN; for (int n : num.

2021-01-20 10:57:22 68

原创 [Leetcode] 力扣560:和为K的子数组

思路涉及到子数组元素和问题,首先想到前缀和方法(空间换时间的方法)class Solution {public: int subarraySum(vector<int>& nums, int k) { unordered_map<int, int> hash; int preSum = 0; int res = 0; hash[0] = 1; //和为0的前缀和目前有一个 fo.

2021-01-16 11:48:50 94

原创 [Leetcode] 力扣75:颜色分类

思路荷兰国旗问题,也是快排的一种优化思路。关于荷兰国旗问题class Solution {public: void sortColors(vector<int>& nums) { int p1 = -1; int p2 = nums.size(); int p = 0; while (p < p2) { if (nums[p] > 1) swap(nums[p], num.

2021-01-13 19:00:13 109

原创 [Leetcode] 力扣503:下一个更大元素II

思路“下一个更大”问题,既然数组循环就遍历数组两遍保证每个元素后面都有整个数组的元素class Solution {public: vector<int> nextGreaterElements(vector<int>& nums) { int n = nums.size(); stack<int> s; vector<int> res(n, -1); for (int i.

2021-01-13 18:22:03 112

原创 [Leetcode] 力扣739:每日温度

思路“下一个更大”问题,使用单调栈进行解答class Solution {public: vector<int> dailyTemperatures(vector<int>& T) { stack<int> s; vector<int> res(T.size()); for (int i = 0; i< T.size(); i++) { while (!s.e.

2021-01-12 21:13:55 117

原创 [Leetcode]力扣496:下一个更大元素I

思路“下一个更大”的问题首先想到的就是单调栈结构方法维护一个单调减的栈,用map存储num2中下一个更大元素的对应关系class Solution {public: vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) { stack<int> s; unordered_map<int, int&gt.

2021-01-12 20:27:03 140

原创 [Leetcode]力扣01:两数之和

思路首先想到的肯定是双指针,但是双指针的复杂度比较高,使用hash结构能够有效的减少复杂度方法用map存放值以及下标,遍历一次数组即可(注意find找不到元素返回的是end()迭代器)class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> hash; for (int i.

2021-01-12 15:43:52 53 1

原创 [Leetcode] 力扣228:汇总区间

思路尽可能的一次遍历处理问题,本质上还是双指针的问题,始终用一个变量维护边界的最左值,遍历寻找最右值,判断左右相等还是不相等插入对应值class Solution {public: vector<string> summaryRanges(vector<int>& nums) { vector<string> res; int n = nums.size(); int left = 0; .

2021-01-10 11:54:42 135

原创 [Leetcode] 力扣189:旋转数组

思路尽量在原数组上操作,引用官方题解下面的热评方法三次reverse操作,注意先对k取余处理,另外注意STL的迭代器end指向的是最后一个元素的下一个位置class Solution {public: void rotate(vector<int>& nums, int k) { int n = nums.size(); k %= n; reverse(nums.begin(), nums.end()); .

2021-01-08 22:36:55 175

原创 [Leetcode] 力扣509:斐波那契数

思路动态规划入门的经典问题。。。方法因为f(n)只和之前两个数有关系,因此可以维护两个变量不断迭代来代替传统动态规划的数组(个人做动态规划喜欢创建n+1的dp数组,有些题好像会是n,无论是什么题都是n+1统一自己的习惯)class Solution {public: int fib(int n) { if (n < 2) return n; int a = 0; int b = 1; for (int i = 2; i.

2021-01-04 09:33:38 101 1

原创 [Leetcode] 力扣86:分隔链表

思路题目中没有要求在原链表上进行操作,因此可以建立一大一小两个链表。方法新建两个链表:small和large。遍历给定链表将节点逐一挂在新建的两个链表上,注意最后对两个链表合并时的处理。class Solution {public: ListNode* partition(ListNode* head, int x) { ListNode* small = new ListNode(-1); ListNode* large = new ListNode(-.

2021-01-03 12:18:56 117

原创 [C++ STL] priority_queue 优先级队列(堆)使用方法

priority_queue本质上维护的是一个堆结构, 默认大根堆,由vector实现定义priority_queue<Type, Container, Functional>Type:数据类型Container:容器类型(默认vector)Fuctional:比较方式(默认大根堆)greater:小根堆less:大根堆priority_queue<int> q;priority_queue<int> a;priority_queue<int.

2021-01-02 12:00:58 166

原创 [Leetcode] 力扣605:种花问题

思路贪心思想,遍历数组,能种花的地方就把花种上。注意判断条件写好。class Solution {public: bool canPlaceFlowers(vector<int>& flowerbed, int n) { for (int i = 0; i < flowerbed.size(); i++) { if (flowerbed[i] == 0 && (i == 0 || flowerbed[i - 1.

2021-01-01 19:32:52 124

空空如也

空空如也

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

TA关注的人

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