leetcode力扣
leetcode力扣
lucky tiger
要一直前进,一直静下心来学习。
展开
-
VIVO 在vivo产线上,每位职工随着对手机加工流程认识的熟悉和经验的增加,日产量也会不断攀升。 假设第一天量产1台,接下来2天(即第二、三天)每天量产2件,接下来3天(即第四、五、六天)每天量产
class Solution {public: /** * * @param n int整型 第n天 * @return int整型 */ int solution(int n) { // write code here int res=0; int day=0; for(int i=1;day<n;i++) { for(int ...原创 2020-06-01 16:52:11 · 2069 阅读 · 0 评论 -
牛客华为机试计算某字母出现次数
1、题目输入的字符串会带有空格getline(cin,s)这样输入是以回车来判断结束2、大小写字母tolower toupper2、a - '0'这样是把数字 1 2 3的ASIC转为10进制 0对应48A 65a 72#include <iostream>#include <algorithm>using namespace std;int main(){ int ans = 0; string s; getli原创 2021-01-20 16:47:27 · 406 阅读 · 0 评论 -
前缀和力扣(6月)
1、525. 连续数组给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。示例 1:输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。示例 2:输入: nums = [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。提示:1 <= nums.length <= 105 num..原创 2021-06-04 23:09:04 · 205 阅读 · 0 评论 -
力扣1190. 反转每对括号间的子串(栈的翻转)
给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1:输入:s = "(abcd)"输出:"dcba"示例 2:输入:s = "(u(love)i)"输出:"iloveu"方法一:模拟遍历(栈的使用,把(之前的字符串放到栈里面,同时用一个字符串来记录(这后面的东西遇到)就翻转之前的字符串,翻转完前面要加上之前的栈保存的(前的东西)class So.原创 2021-05-28 19:08:34 · 168 阅读 · 0 评论 -
力扣 1011. 在 D 天内送达包裹的能力(二分)
https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。示例 1:输入:weights = [1,2,3,4,5,6,7,8,9.原创 2021-05-10 14:25:03 · 253 阅读 · 0 评论 -
力扣1482.制作 m 束花所需的最少天数(二分)
https://leetcode-cn.com/problems/minimum-number-of-days-to-make-m-bouquets/给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。示例 1:输.原创 2021-05-10 10:35:17 · 200 阅读 · 0 评论 -
力扣7. 整数反转(指针引用形参、指针常量与长指针区别)
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321class Solution {public: int reverse(int x) { int ans = 0; wh..原创 2021-05-06 16:09:21 · 139 阅读 · 0 评论 -
力扣 80. 删除有序数组中的重复项 II(双指针)
1、https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/2、80. 删除有序数组中的重复项 II3、给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用.原创 2021-04-06 22:05:12 · 185 阅读 · 0 评论 -
数组地址与指针(二维数组*test.begin()->begin())
对于数组来说数组名字本身就是一个指针,它是一个指针常量,指向的地址不变。比如你定义了一个数组变量,编译器就会在内存中划分了一块地址空间给它,数组名这个指针常量就指向了这块内存空间的首地址,而数组首元素就存在这段内存空间的首地址处,即这段内存空间的首地址跟数组首元素的内存地址是一样的。#include<stdio.h>#include<iostream>#include<algorithm>#include <vector>using na原创 2021-03-30 11:09:25 · 405 阅读 · 0 评论 -
力扣542 01矩阵(广度优先搜索)
1、https://leetcode-cn.com/problems/01-matrix/2、给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。3、输入:[[0,0,0], [0,1,0], [0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]]class Solution {private: static constexpr int dirs[4][2] = {{-1, 0...原创 2021-03-24 19:51:59 · 251 阅读 · 0 评论 -
力扣115不同的子序列2(记忆化搜索-DFS)
直接递归DFS超时class Solution {public: int dfs(string s,int idx, string t,int tmp) { if(tmp == t.size()) { return 1; } if(idx == s.size()) { return 0; } if(s[idx] == t[tm原创 2021-03-24 10:23:00 · 176 阅读 · 0 评论 -
力扣115不同的子序列1(动态规划)
1、https://leetcode-cn.com/problems/distinct-subsequences/2、给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)3、输入:s = "rabbbit", t = "rabbit"输出:3解释:如下图所示, 有 3 种可以从 s原创 2021-03-23 21:18:33 · 233 阅读 · 0 评论 -
力扣73置零矩阵(常量空间解决方法)
1、https://leetcode-cn.com/problems/set-matrix-zeroes/2、题目给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。进阶: 一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。 一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。 你能想出一个仅使用常量空间的解决方案吗?3、示例示例 1:...原创 2021-03-23 15:50:39 · 248 阅读 · 0 评论 -
回溯递归(小结)
回溯是一种算法思想,递归是一种编程方法。回溯方法整体思路:搜索每一条路,每次回溯是对具体的一条路径而言的。对当前搜索路径下的未探索区域进行搜索,则可能有两种情况:1、当前未搜索区域满足结束条件,则保存当前路径并退出当前搜索;2、当前未搜索区域需要继续搜索,则遍历当前所有可能的选择;如果该选择符合要求,则把当前选择加入当前的搜索路径中,并继续搜索新的未搜索区域。一般回溯用在需要保存所有情况的题中,也就是不是计算有多少符合条件的情况。模板1res = []path = []de原创 2021-03-12 22:16:04 · 201 阅读 · 0 评论 -
力扣1052.爱生气的书店老板 滑动窗口
1、直接暴力做的话超时了,而且还要注意很多边界条件,理不太清。。class Solution {public: int maxSatisfied(vector<int>& customers, vector<int>& grumpy, int X) { int n = customers.size(); int res = INT_MIN; int ans = 0; int idx原创 2021-02-23 15:08:18 · 125 阅读 · 0 评论 -
力扣995.K连续位的最小翻转次数 —— 滑动平均
1、暴力超时,从左到右一个一个看class Solution {public: int minKBitFlips(vector<int>& A, int K) { int n = A.size(); int ans = 0; for(int i = 0; i < n; i++)//直接暴力从左到右遍历 { if(A[i] != 1 && i < n) ..原创 2021-02-19 21:03:02 · 150 阅读 · 0 评论 -
力扣204.计数质数(质数的计算方法)
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。从2到x-1里面找他的约数,直接全部遍历会超时y x/y两个有一个是小于等于根号x的,所以可以遍历2到根号xclass Solution {public: bool isfun(int x) { for(int i = 2; i*i <= x; i++) { if(x % i == 0) { ...原创 2020-12-06 16:27:22 · 356 阅读 · 0 评论 -
力扣452 用最少数量的箭引爆气球 贪心
1、这道题里面可以不用lamda但是用了速度会变快贪心+数组交集class Solution {public: int findMinArrowShots(vector<vector<int>>& points) { if(points.size() == 0)return 0; sort(points.begin(),points.end(),[&](vector<int>& a,vect.原创 2020-11-24 11:14:41 · 168 阅读 · 0 评论 -
力扣1122.数组的相对排序 sort自定义
1、这道题true false的使用returnmp[x]>mp[y];和这句意思是一样的class Solution {public: vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) { unordered_map<int,int>mp; for(int i=0;i<arr2....原创 2020-11-17 10:40:22 · 561 阅读 · 0 评论 -
力扣922.按奇偶排序数组II 双指针
1、没想到双指针,直接暴力和双指针效果差很多,下次看到数组的这种调顺序的先双指针,暴力没意思。i 代表偶数, j代表奇数,A[i]要是奇数的话,j就往前走把奇偶调换class Solution {public: vector<int> sortArrayByParityII(vector<int>& A) { int n = A.size(); int j = 1; for(int i = 0; i &l原创 2020-11-12 11:33:16 · 152 阅读 · 0 评论 -
力扣31.下一个排列
直接调用库函数next_permutationclass Solution {public: void nextPermutation(vector<int>& nums) { next_permutation(nums.begin(), nums.end()); }};15847632先是找降序排列的,找到第一个比降序排列小的数据,和降序排列里面第一个大于他的交换12321--------13221class Solu..原创 2020-11-10 10:51:01 · 116 阅读 · 0 评论 -
力扣845数组中的最长山脉 枚举山顶
1、2、解法枚举山顶,三次遍历,一次求出所有数据的左侧山坡数量,一次右边,最后求最大山脉class Solution {public: int longestMountain(vector<int>& A) { int n = A.size(); if(!n)return 0; vector<int>left(n); for(int i = 1; i < n; i++)原创 2020-10-26 09:42:08 · 123 阅读 · 0 评论 -
力扣143 重排链表 快慢指针 指针反转 指针插入
注意点1:快慢指针求中间节点,向下取的!!!!所以我们在循环的时候是需要fast->next fast->next->next注意点2:链表反转的时候要返回头节点此时cur是nullptr 需要返回的是pre/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : va...原创 2020-10-20 19:11:58 · 165 阅读 · 0 评论 -
力扣19,删除链表中的倒数第n个节点 一次遍历
1、双指针明确来说也不算一次遍历因为需要先移动n次快指针这里要注意删除头节点的情况。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * Lis..原创 2020-10-19 17:07:28 · 285 阅读 · 0 评论 -
力扣977.有序数组的平方 双指针的使用首尾
class Solution {public: vector<int> sortedSquares(vector<int>& A) { vector<int>ans; for(int i = 0,j = A.size()-1; i <= j; i++) { while(i < j && abs(A[i]) > abs(A[j])) ...原创 2020-10-16 10:53:29 · 159 阅读 · 0 评论 -
力扣78子集 回溯
1、这几天找完工作没怎么做题手生了和前几天的回溯一样这道题只不过是没有限定子集的长度class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>>vec; if(nums.size() == 0)return vec; vector<int原创 2020-09-24 16:07:57 · 255 阅读 · 0 评论 -
力扣47 全排列ii 回溯加剪枝
这题难点在于先排序,然后重复的数字112 used[i-1]= fase 代表之前我用过了,就是我俩 1前面的用过了现在这一个我就直接跳过去class Solution {public:vector<bool> used; vector<vector<int>> permuteUnique(vector<int>& nums) { sort(nums.begin(),nums.end()); vect.原创 2020-09-18 22:16:12 · 186 阅读 · 0 评论 -
next_permutation求排列暴力力扣60第k个排列
class Solution {public: string getPermutation(int n, int k) { string s; for(int i = 1; i <= n; i++) { s += to_string(i); } for(int i = 1; i < k; i++) { next_permutati...原创 2020-09-06 11:33:16 · 128 阅读 · 0 评论 -
华为考题5-最长回文子串
1、暴力解法class Solution {public: string longestPalindrome(string s) { int n = s.size(); if(n < 2)return s; int begin = 0; int maxlen = 1; string ans; for(int i = 0; i < n-1; i++) ..原创 2020-09-03 11:03:40 · 186 阅读 · 0 评论 -
力扣486 预测赢家
1、递归class Solution {public: bool PredictTheWinner(vector<int>& nums) { if(nums.size()%2 == 0)return true; return dfs(nums,0,nums.size()-1,1)>=0; } int dfs(vector<int>& nums,int start,int end,int trun..原创 2020-09-02 10:13:20 · 187 阅读 · 0 评论 -
力扣459重复的子字符串
class Solution {public: bool repeatedSubstringPattern(string s) { return (s+s).find(s,1) != s.size(); }};原创 2020-08-24 10:41:19 · 187 阅读 · 1 评论 -
背包问题01-力扣494目标和
1、DFS暴力超时class Solution {public: int findTargetSumWays(vector<int>& nums, int S) { return dfs(nums,S,0); } int dfs(vector<int>& nums,uint target,int left) { if(target == 0 && left == nums.size原创 2020-08-17 20:29:16 · 1448 阅读 · 0 评论 -
力扣209 长度最小子数组 双指针滑动窗口
1、class Solution {public: int minSubArrayLen(int s, vector<int>& nums) { int i = 0; int j = 0; int sum = 0; if(nums.size() == 0) { return 0; } vector<int> len;原创 2020-06-28 10:27:09 · 157 阅读 · 0 评论 -
力扣 面试题66 构建对称数组 时间复杂度O(N)
1、2、class Solution {public: vector<int> constructArr(vector<int>& a) { int tmp = 1, n = a.size(); vector<int> ans(n, 1); for (int i = 0; i < n - 1; ++i) { tmp *= a[i];原创 2020-06-19 15:44:19 · 217 阅读 · 0 评论 -
力扣 面试题57 和为S的连续正数序列 *滑动窗口法
1、利用滑动窗口来做i,j=1小于tj++大于ti++i < t/2有序数组i = t/2下一个i+1就大于t/2加起来就不对了2、class Solution {public: vector<vector<int>> findContinuousSequence(int target) { int i = 1; // 滑动窗口的左边界 int j = 1; // 滑动窗口的右边界 int sum = 0;原创 2020-06-18 08:42:12 · 151 阅读 · 0 评论 -
力扣287 寻找重复数
1、二分 快慢指针 位运算https://leetcode-cn.com/problems/find-the-duplicate-number/2、class Solution {public: int findDuplicate(vector<int>& nums) { int left = 1; int right = nums.size()-1; int ans = -1;原创 2020-05-27 14:33:11 · 208 阅读 · 0 评论 -
力扣1029 两地调度-贪心
1、贪心一般和迭代一起出现贪心里面好多都要用上排序用了匿名函数把A-B从小到大排序比如-10 -170 350 10-170([30,200]这个一定是去A) -10 10 350迭代一半一半求和class Solution {public: int twoCitySchedCost(vector<vector<int>>& costs) { sort(costs.begin(),costs.en...原创 2020-05-11 19:58:40 · 202 阅读 · 0 评论 -
leetcode 50快速幂
1、2、class Solution {public: double myPow(double x, int n) { long N=n; if(n<0) { N=-N; x=1/x; } return fastpow(x,N); } double fastpow(double x,int n) {原创 2020-05-11 10:09:22 · 132 阅读 · 0 评论 -
字典树-单词查找树,Trie树
1、哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串; 每个节点的所有子节点包含的字符都不相同。...原创 2020-05-11 09:44:23 · 226 阅读 · 0 评论 -
摩尔投票法
1、一命抵一命人多的赢https://www.zhihu.com/question/499731632、class Solution {public: int majorityElement(vector<int>& nums) { int count=1; int major=nums[0];//摩尔计数 ...原创 2020-05-08 16:01:50 · 112 阅读 · 0 评论