
逻辑小题目
谢蟹蟹猴啊
这个作者很懒,什么都没留下…
展开
-
1743. 从相邻元素对还原数组
思路: 这个题目挺妙的,注意到就是相邻包括了左相邻和右相邻,在数组开头和结尾的数字只有1次相邻。因此我们可以把所有数字对应的相邻元素作为哈希表的值存储,然后遍历哈希表,如果值维度是1,说明这个是开头或者结尾得元素。中间得元素相邻是2个得。 然后从后续依次,选择相邻中没走过的元素连接即可。class Solution {public: vector<int> restoreArray(vector<vector<int>>& adjacen.原创 2021-07-25 11:27:41 · 72 阅读 · 0 评论 -
Leetcode72:编辑距离--面试题常考之动态规划~
思路: 一旦涉及到子问题,可以用自顶向下的递归和自底向上的动态规划。然而递归会产生许多重复的计算,动态规划就不同了首先搬上动态规划代码,思路是这里有两个变量,字符串1和2的长度,dp[i][j]表示把字符串1的前0个到i个字符串变成字符串2的前0个到j字符所需要的最少操作个数。如果i和j对应的元素相同那我们操作个数dp[i][j]=dp[i-1][j-1];如果不同,那为了相同,我们可以使用插入,删除和提换操作中的最小代价。class Solution {public: int min.原创 2021-07-17 14:43:58 · 123 阅读 · 0 评论 -
91. 解码方法 +28.实现strStr()
class Solution {public: int numDecodings(string s) { int n = s.size(); vector<int> f(n + 1); f[0] = 1; for (int i = 1; i <= n; ++i) { if (s[i - 1] != '0') { f[i] += f[i - 1]; .原创 2021-07-14 15:32:32 · 78 阅读 · 0 评论 -
双指针系列之--盛水最多的容器
题目:思路1: 暴力法,通过54/60class Solution {public: int maxArea(vector<int>& height) { //暴力法 int n=height.size(); int maxvalue=0; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ maxvalue=max(maxvalue,(j-i原创 2021-07-10 14:32:44 · 74 阅读 · 0 评论 -
66. 加一:对于进位操作的一些处理
66. 加一class Solution {public: vector<int> plusOne(vector<int>& digits) { //两种情况,非9和 9,9要考虑前面的进位 for(int i=digits.size()-1;i>=0;i--){ digits[i]++; digits[i]=digits[i]%10; if(digits[i]!=0) return d原创 2021-07-10 09:44:34 · 144 阅读 · 0 评论 -
6. Z 字形变换
思路: 这个题目挺有意思的,就是按照Z型变换从上到下,从左到右来建立排列,然后输出的时候按照行来读取。 我们可以每次按顺序把行的元素读取再拼接!关键在于如何读取每一行的元素是谁呢? 注意到我们就是在Z变换图上索引元素,当行等于0开始就是从上往下不断增加行,然后增加字符串的索引下标。当行走到尾巴的时候行就开始减少了class Solution {public: string convert(string s, int numRows) { if (numRo.原创 2021-07-09 16:00:24 · 82 阅读 · 0 评论 -
算法重构大赛的准备2道题~~~
L题:这是一道压轴题思路: 用sum数组从1开始,每个下标就代表新的元素出现 1比如是0 2是1 3是0就代表一段的结束。~~然后看第一段和第二段,以及后面我抽掉中间的注意左右肯定是连在一起的~~。#include <iostream>#include<algorithm>#include<vector>#include<queue>#include<stack>#include<string> #include&l原创 2021-07-07 14:13:47 · 100 阅读 · 0 评论 -
1418. 点菜展示表 --双重哈希表~~~~~~~~
class Solution {public: vector<vector<string>> displayTable(vector<vector<string>>& orders) { unordered_set<string> namelist; unordered_map<int, unordered_map<string, int>> map; fo.原创 2021-07-06 10:24:58 · 121 阅读 · 0 评论 -
1921. 消灭怪物的最大数量 --排序+贪心
思路: 这道题感觉挺有意思的,而且确定了思路能很快写出来。可以理解为怪物走了才能打,但是第0分钟开始时,速度乘时间是0,所以走0。 每只怪物都有到达终点的时间,时间从0开始,我们可以计算所有怪兽到达终点的时间-1,然后对时间排序,从小到达,分别优先对到达时间短的怪兽击杀。 我们遍历怪兽的数量,因为数量这么多,我最多花这么多时间击杀嘛。 当i=0时,击杀最小时间的怪兽,当i >time[i]时,就是我们安排击杀的时间大于怪兽的到达时间时,我们无法继续击杀了。此时击杀的怪兽数量是.原创 2021-07-05 11:10:56 · 338 阅读 · 0 评论 -
1922. 统计好数字的数目:快速幂的应用
思路: 这道题目我想到的是0-9之间一共有5个偶数,4个质数,其中1不是质数也不是偶数。那么2位数字的组合就是5乘4等于20,那么问题就变成了20的(sum/2)次幂。问题转换为x的n次幂计算最快的方式! 所以引入了快速幂的方法!class Solution {public: double quickMul(double x, long long N) { double ans = 1.0; // 贡献的初始值为 x double x_c.原创 2021-07-05 10:46:23 · 135 阅读 · 0 评论 -
645. 错误的集合
645. 错误的集合题目: 集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。 给定一个数组 nums 代表了集合 S 发生错误后的结果。 请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。思路: 最简单的思路是分2次遍历数组,找到重复的很简单就直接加入返回数组。然后删除数组中的这个元素。 然后就是找缺失的,我们知道现在数组没有重复元素了,排序正常原创 2021-07-04 14:23:41 · 90 阅读 · 0 评论 -
儿童节快乐!1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
题目: 给你一个下标从 0 开始的正整数数组 candiesCount ,其中 candiesCount[i] 表示你拥有的第 i 类糖果的数目。同时给你一个二维数组 queries 。 其中 queries[i] = [favoriteTypei, favoriteDayi, dailyCapi] 。你按照如下规则进行一场游戏:1.你从第 0 天开始吃糖果。2.你在吃完 所有 第 i - 1 类糖果之前,不能 吃任何一颗第 i 类糖果。3.在吃完所有糖果之前,你必须每天 至少 吃 一颗 糖果原创 2021-06-01 12:07:24 · 136 阅读 · 0 评论