Leetcode_入门_贪心思想

  • 1、分发饼干(455、Easy)
    • 1)题目要求
    • 2)我的解法
    • 3)其他解法
    • 4)自己的优化代码
    • 5)学到的东西
  • 2、无重叠区间(435、Medium)
    • 1)题目要求
    • 2)我的解法
    • 3)其他解法
    • 4)自己的优化代码
    • 5)学到的东西
  • 3、用最少数量的箭引爆气球(452、Medium)
    • 1)题目要求
    • 2)我的解法
    • 3)其他解法
    • 4)自己的优化代码
    • 5)学到的东西
  • 4、根据身高重建队列(406、Medium)
    • 1)题目要求
    • 2)我的解法
    • 3)其他解法
    • 4)自己的优化代码
    • 5)学到的东西
  • 5、买卖股票的最佳时机(121、Easy)
    • 1)题目要求
    • 2)我的解法
    • 3)其他解法
    • 4)自己的优化代码
    • 5)学到的东西
  • 6、买卖股票的最佳时机 II(122、Easy)
    • 1)题目要求
    • 2)我的解法
    • 3)其他解法
    • 4)自己的优化代码
    • 5)学到的东西
  • 7、种花(605、Easy)
    • 1)题目要求
    • 2)我的解法
    • 3)其他解法
    • 4)自己的优化代码
    • 5)学到的东西
  • 8、判断子序列(392、Easy)
    • 1)题目要求
    • 2)我的解法
    • 3)其他解法
    • 4)自己的优化代码
    • 5)学到的东西
  • 9、非递减数列(665、Easy)
    • 1)题目要求
    • 2)我的解法
    • 3)其他解法
    • 4)自己的优化代码
    • 5)学到的东西
  • 10、最大子序和(53、Easy)
    • 1)题目要求
    • 2)我的解法
    • 3)其他解法
    • 4)自己的优化代码
    • 5)学到的东西
  • 11、划分字母区间(763、Medium)
    • 1)题目要求
    • 2)我的解法
    • 3)其他解法
    • 4)自己的优化代码
    • 5)学到的东西

1、分发饼干(455、Easy)

1)题目要求

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

注意:

你可以假设胃口值为正。
一个小朋友最多只能拥有一块饼干。

示例 1:

输入: [1,2,3], [1,1]

输出: 1

解释:
你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。
虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。
所以你应该输出1。
示例 2:

输入: [1,2], [1,2,3]

输出: 2

解释:
你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。
你拥有的饼干数量和尺寸都足以让所有孩子满足。
所以你应该输出2.

2)我的解法

c++

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(),g.end());//参数为起始迭代器(地址)和终止(迭代器)地址sort(s.begin(),s.end());int i=0,j=0,result=0;while(i<g.size()&&j<s.size()){if(s[j]>=g[i]){result++;i++;}j++;}return result;}
};

3)其他解法

在这里插入图片描述

int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int i = 0, j = 0;int result = 0;while (i != g.size() && j != s.size()){if (g[i] <= s[j]){result++;i++;j++;}elsej++;}return result;
}

作者:Smart_Shelly
链接: link
来源:力扣(LeetCode)

4)自己的优化代码

c++

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(),g.end());//参数为起始迭代器(地址)和终止(迭代器)地址sort(s.begin(),s.end());int i=0,j=0,result=0;while(i<g.size()&&j<s.size()){if(s[j]>=g[i]){result++;i++;}j++;}return result;}
};

5)学到的东西

贪心算法:贪心算法的基本思想是找出整体当中每个小的局部的最优解,并且将所有的这些局部最优解合起来形成整体上的一个最优解。因此能够使用贪心算法的问题必须满足下面的两个性质:

1.整体的最优解可以通过局部的最优解来求出;

2.一个整体能够被分为多个局部,并且这些局部都能够求出最优解。使用贪心算法当中的两个典型问题是活动安排问题和背包问题。

(参考了博客:link)

c++中sort函数用法:link

2、无重叠区间(435、Medium)

1)题目要求

给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。

注意:

可以认为区间的终点总是大于它的起点。
区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。
示例 1:

输入: [ [1,2], [2,3], [3,4], [1,3] ]

输出: 1

解释: 移除 [1,3] 后,剩下的区间没有重叠。
示例 2:

输入: [ [1,2], [1,2], [1,2] ]

输出: 2

解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。
示例 3:

输入: [ [1,2], [2,3] ]

输出: 0

解释: 你不需要移除任何区间,因为它们已经是无重叠的了。

2)我的解法

c++

class Solution {
public:static bool mycompare(vector<int>&a,vector<int>&b)//必须静态{return (a[1]<b[1]);}int eraseOverlapIntervals(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end(),mycompare);int i=0,j=1,result=0;while(i<intervals.size()&&j<intervals.size()){if(intervals[i][1]<=intervals[j][0])i=j;else result++;j++;}return result;}
};

3)其他解法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

public class Solution {class myComparator implements Comparator<Interval> {public int compare(Interval a, Interval b) {return a.start - b.start;}}public int eraseOverlapIntervals(Interval[] intervals) {if (intervals.length == 0) {return 0;}Arrays.sort(intervals, new myComparator());int end = intervals[0].end, prev = 0, count = 0;for (int i = 1; i < intervals.length; i++) {if (intervals[prev].end > intervals[i].start) {if (intervals[prev].end > intervals[i].end) {prev = i;}count++;} else {prev = i;}}return count;}
}

在这里插入图片描述

在这里插入图片描述

public class Solution {class myComparator implements Comparator<Interval> {public int compare(Interval a, Interval b) {return a.end - b.end;}}public int eraseOverlapIntervals(Interval[] intervals) {if (intervals.length == 0) {return 0;}Arrays.sort(intervals, new myComparator());int end = intervals[0].end;int count = 1;for (int i = 1; i < intervals.length; i++) {if (intervals[i].start >= end) {end = intervals[i].end;count++;}}return intervals.length - count;}
}

作者:LeetCode
链接: link
来源:力扣(LeetCode)

4)自己的优化代码

c++
按起点比较

class Solution {
public:static bool mycompare(vector<int>&a,vector<int>&b)//必须静态{return (a[0]<b[0]);}int eraseOverlapIntervals(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end(),mycompare);int i=0,j=1,result=0;while(i<intervals.size()&&j<intervals.size()){if(intervals[i][1]<=intervals[j][0])i=j;else if(intervals[i][1]<intervals[j][1])result++;//删去后面那个else {result++;i=j;}//删去前面那个j++;}return result;}
};

按终点比较

class Solution {
public:static bool mycompare(vector<int>&a,vector<int>&b)//必须静态{return (a[1]<b[1]);}int eraseOverlapIntervals(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end(),mycompare);int i=0,j=1,result=0;while(i<intervals.size()&&j<intervals.size()){if(intervals[i][1]<=intervals[j][0])i=j;else result++;//删去后面那个j++;}return result;}
};

5)学到的东西

贪心算法:按照什么排序不是很重要,重要的是排序后对各种可能情况的分析

一定一定要分析各种可能的情况

C++sort函数的使用:比较函数需要为静态,原因参考博客:link

3、用最少数量的箭引爆气球(452、Medium)

1)题目要求

在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。

一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使得所有气球全部被引爆,所需的弓箭的最小数量。

Example:

输入:
[[10,16], [2,8], [1,6], [7,12]]

输出:
2

解释:
对于该样例,我们可以在x = 6(射爆[2,8],[1,6]两个气球)和 x = 11(射爆另外两个气球)。

2)我的解法

c++
和上面那题很像

class Solution {
public:bool static mycompare(vector<int>&a,vector<int>&b){return a[1]<b[1];}int findMinArrowShots(vector<vector<int>>& points) {sort(points.begin(),points.end(),mycompare);int i=0,j=1,result=1;if(points.size()==0)result=0;while(i<points.size()&&j<points.size()){if(points[i][1]<points[j][0]){result++;i=j;}j++;}return result;}
};

3)其他解法

在这里插入图片描述

在这里插入图片描述

class Solution {public int findMinArrowShots(int[][] points) {if (points.length == 0) return 0;// sort by x_endArrays.sort(points, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {return o1[1] - o2[1];}});int arrows = 1;int xStart, xEnd, firstEnd = points[0][1];for (int[] p : points) {xStart = p[0];xEnd = p[1];// if the current balloon starts after the end of another one,// one needs one more arrowif (firstEnd < xStart) {arrows++;firstEnd = xEnd;}}return arrows;}
}

作者:LeetCode
链接:link
来源:力扣(LeetCode)

4)自己的优化代码

c++

class Solution {
public:bool static mycompare(vector<int>&a,vector<int>&b){return a[1]<b[1];}int findMinArrowShots(vector<vector<int>>& points) {sort(points.begin(),points.end(),mycompare);int i=0,j=1,result=1;if(points.size()==0)result=0;while(i<points.size()&&j<points.size()){if(points[i][1]<points[j][0]){result++;i=j;}j++;}return result;}
};

5)学到的东西

转换问题,比如该问题可转换为求有多少个不重叠区间

贪心算法

4、根据身高重建队列(406、Medium)

1)题目要求

假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。

注意:
总人数少于1100人。

示例

输入:
[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]

输出:
[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

2)我的解法

c++

class Solution {
public:static bool mycompare(vector<int>&a,vector<int>&b){if(a[0]!=b[0])return a[0]>b[0];else return a[1]<b[1];}vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(),people.end(),mycompare);for(int i=0;i<people.size();i++){if(people[i][1]!=i){//和插入排序类似,每次前i-1的个数的顺序已经排好//把people[i]放到people[i][1]对应的下标位置上int j=i;int target=people[i][1];//要先把这个存起来,people[i][1]的值会变的vector<int> temp=people[i];while(j>target){people[j]=people[j-1];j--;}people[target]=temp;}}return people;}
};

3)其他解法

我的思路居然和官方思路一模一样,开心
1、

class Solution {public int[][] reconstructQueue(int[][] people) {Arrays.sort(people, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {// if the heights are equal, compare k-valuesreturn o1[0] == o2[0] ? o1[1] - o2[1] : o2[0] - o1[0];}});List<int[]> output = new LinkedList<>();for(int[] p : people){output.add(p[1], p);}int n = people.length;return output.toArray(new int[n][2]);}
}

作者:LeetCode
链接:link
来源:力扣(LeetCode)

2、
c++
(1)

class Solution {
public:vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {// 先排序// [7,0], [7,1], [6,1], [5,0], [5,2], [4,4]// 再一个一个插入。// [7,0]// [7,0], [7,1]// [7,0], [6,1], [7,1]// [5,0], [7,0], [6,1], [7,1]// [5,0], [7,0], [5,2], [6,1], [7,1]// [5,0], [7,0], [5,2], [6,1], [4,4], [7,1]sort(people.begin(), people.end(), [](const vector<int>& a, const vector<int>& b) {if (a[0] > b[0]) return true;if (a[0] == b[0] && a[1] < b[1]) return true;return false;});vector<vector<int>> res;for (auto& e : people) {res.insert(res.begin() + e[1], e);}return res;}
};

(2)用 list 会有提速:

class Solution {
public:vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {std::sort(people.begin(), people.end(), [](const vector<int>& a, const vector<int>& b){return (a[0] > b[0]) || (a[0] == b[0] && a[1] < b[1]);});list<vector<int>> r;for (auto& e : people) {auto pos = r.begin();advance(pos, e[1]);//将迭代器前进或后退几个位置r.insert(pos, e);}return std::vector<vector<int>>(r.begin(), r.end());}
};

作者:ivan_allen
链接: link
来源:力扣(LeetCode)

4)自己的优化代码

c++

class Solution {
public:static bool mycompare(vector<int>&a,vector<int>&b){if(a[0]!=b[0])return a[0]>b[0];else return a[1]<b[1];}vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(),people.end(),mycompare);for(int i=0;i<people.size();i++){if(people[i][1]!=i){//和插入排序类似,每次前i-1的个数的顺序已经排好//把people[i]放到people[i][1]对应的下标位置上int j=i;int target=people[i][1];//要先把这个存起来,people[i][1]的值会变的vector<int> temp=people[i];while(j>target){people[j]=people[j-1];j--;}people[target]=temp;}}return people;}
};

5)学到的东西

利用链表、利用API

贪心思想,去试各种排序方法,并对各种情况进行分析

进行插入排序时,一定要用临时变量把需要保存的值保存下来,因为排序过程中很多值会变

5、买卖股票的最佳时机(121、Easy)

1)题目要求

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。

注意:你不能在买入股票前卖出股票。

示例 1:

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
示例 2:

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

2)我的解法

c++
动态规划

class Solution {
public:int maxProfit(vector<int>& prices) {int mi=9999;int result=0;for(int i=0;i<prices.size();i++){mi=min(mi,prices[i]);result=max(result,prices[i]-mi);}return result;}
};

3)其他解法

状态转移方程:前i天的最大收益 = max{前i-1天的最大收益,第i天的价格-前i-1天中的最小价格}

public class Solution {public int maxProfit(int prices[]) {int minprice = Integer.MAX_VALUE;int maxprofit = 0;for (int i = 0; i < prices.length; i++) {if (prices[i] < minprice)minprice = prices[i];else if (prices[i] - minprice > maxprofit)maxprofit = prices[i] - minprice;}return maxprofit;}
}

作者:LeetCode-Solution
链接:link
来源:力扣(LeetCode)

4)自己的优化代码

c++

class Solution {
public:int maxProfit(vector<int>& prices) {int mi=9999;int result=0;for(int i=0;i<prices.size();i++){mi=min(mi,prices[i]);result=max(result,prices[i]-mi);}return result;}
};

5)学到的东西

分类有点问题。。这题应该放在动态规划部分。。。不过无所谓了

动态规划思想

6、买卖股票的最佳时机 II(122、Easy)

1)题目要求

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:

输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
示例 2:

输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。
因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
示例 3:

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

提示:

1 <= prices.length <= 3 * 10 ^ 4
0 <= prices[i] <= 10 ^ 4

2)我的解法

c++
把每段上升段都加上

class Solution {
public:int maxProfit(vector<int>& prices) {int result=0;if(prices.size()<=1)return 0;for(int i=1;i<prices.size();i++){if(prices[i]>prices[i-1])result+=prices[i]-prices[i-1];}return result;}
};

3)其他解法

在这里插入图片描述

public class Solution {private int res;public int maxProfit(int[] prices) {int len = prices.length;if (len < 2) {return 0;}this.res = 0;dfs(prices, 0, len, 0, res);return this.res;}/*** @param prices 股价数组* @param index  当前是第几天,从 0 开始* @param status 0 表示不持有股票,1表示持有股票,* @param profit 当前收益*/private void dfs(int[] prices, int index, int len, int status, int profit) {if (index == len) {this.res = Math.max(this.res, profit);return;}dfs(prices, index + 1, len, status, profit);if (status == 0) {// 可以尝试转向 1dfs(prices, index + 1, len, 1, profit - prices[index]);} else {// 此时 status == 1,可以尝试转向 0dfs(prices, index + 1, len, 0, profit + prices[index]);}}
}

在这里插入图片描述

在这里插入图片描述

public class Solution {public int maxProfit(int[] prices) {int len = prices.length;if (len < 2) {return 0;}// 0:持有现金// 1:持有股票// 状态转移:0 → 1 → 0 → 1 → 0 → 1 → 0int[][] dp = new int[len][2];dp[0][0] = 0;dp[0][1] = -prices[0];for (int i = 1; i < len; i++) {dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);//存放的即前i个数最大收益//dp[i - 1][0]为前i-1天的最大收益//dp[i - 1][1] + prices[i]为买入前一天股票,并在今天卖出//(并不是真的进行了交易,但是等价于进行了交易,具体解释参考下面的贪心算法)dp[i][1]=dp[i][0]-prices[i];//存放的即如果买入当前股票,还剩的钱}return dp[len - 1][0];}
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

public class Solution {public int maxProfit(int[] prices) {int res = 0;int len = prices.length;for (int i = 0; i < len - 1; i++) {int diff = prices[i + 1] - prices[i];if (diff > 0) {res += diff;}}return res;}
}

作者:liweiwei1419
链接: link
来源:力扣(LeetCode)

4)自己的优化代码

c++

class Solution {
public:int maxProfit(vector<int>& prices) {int result=0;if(prices.size()<=1)return 0;for(int i=1;i<prices.size();i++){if(prices[i]>prices[i-1])result+=prices[i]-prices[i-1];}return result;}
};

5)学到的东西

画出递归树再进行暴力搜索(改变状态,遍历每种情况)(递归到最下面再回溯)

贪心:不一定排序,每次仅对小范围的几个数进行操作。思考如何拆分成小问题,如本题就是看今天的是否大于昨天的

动态规划:状态转移方程有时是根据暴力法想出来的。

可以对问题进行等价操作,比如本题中虽然不允许卖完又在当天立刻买回来,但在贪心计算时可以这样操作

因为 (prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])
等价于 prices[3] - prices[0]

7、种花(605、Easy)

1)题目要求

假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。

给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。

示例 1:

输入: flowerbed = [1,0,0,0,1], n = 1
输出: True
示例 2:

输入: flowerbed = [1,0,0,0,1], n = 2
输出: False
注意:

数组内已种好的花不会违反种植规则。
输入的数组长度范围为 [1, 20000]。
n 是非负整数,且不会超过输入数组的大小。

2)我的解法

c++

class Solution {
public:bool canPlaceFlowers(vector<int>& flowerbed, int n) {int result=0;for(int i=0;i<flowerbed.size();i++){if(flowerbed[i]==0){if(flowerbed.size()==1)result++;else if(i==0&&flowerbed[i+1]==0)result++;else if(i==flowerbed.size()-1&&flowerbed[i-1]==0)result++;else if(i>0&&i<flowerbed.size()-1&&flowerbed[i-1]==0&&flowerbed[i+1]==0)result++;else continue;flowerbed[i]=1;}}return n<=result;}
};

3)其他解法

在这里插入图片描述

public class Solution {public boolean canPlaceFlowers(int[] flowerbed, int n) {int i = 0, count = 0;while (i < flowerbed.length) {if (flowerbed[i] == 0 && (i == 0 || flowerbed[i - 1] == 0) && (i == flowerbed.length - 1 || flowerbed[i + 1] == 0)) {flowerbed[i] = 1;count++;}i++;}return count >= n;}
}

在这里插入图片描述

public class Solution {public boolean canPlaceFlowers(int[] flowerbed, int n) {int i = 0, count = 0;while (i < flowerbed.length) {if (flowerbed[i] == 0 && (i == 0 || flowerbed[i - 1] == 0) && (i == flowerbed.length - 1 || flowerbed[i + 1] == 0)) {flowerbed[i++] = 1;count++;}if(count>=n)return true;i++;}return false;}
}

作者:LeetCode
链接: link
来源:力扣(LeetCode)

4)自己的优化代码

c++

class Solution {
public:bool canPlaceFlowers(vector<int>& flowerbed, int n) {int result=0;for(int i=0;i<flowerbed.size();i++){if(flowerbed[i]==0){if((i==0||flowerbed[i-1]==0)&&(i==flowerbed.size()-1||flowerbed[i+1]==0)){result++;flowerbed[i]=1;}}}return n<=result;}
};

5)学到的东西

贪心思想:思考如何把问题拆分成小问题

尽量简洁的进行判断

8、判断子序列(392、Easy)

1)题目要求

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

示例 1:
s = “abc”, t = “ahbgdc”

返回 true.

示例 2:
s = “axc”, t = “ahbgdc”

返回 false.

后续挑战 :

如果有大量输入的 S,称作S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?

2)我的解法

c++

class Solution {
public:bool isSubsequence(string s, string t) {int i=0,j=0;while(i<s.length()&&j<t.length()){if(s[i]==t[j])i++;j++;}return i==s.length();}
};

3)其他解法

1、一个一个找

class Solution {public boolean isSubsequence(String s, String t) {int index = -1;for (char c : s.toCharArray()){index = t.indexOf(c, index+1);if (index == -1) return false;}return true;}
}

作者:张英俊
链接:评论区
来源:力扣(LeetCode)

2、动态规划

在这里插入图片描述

class Solution {
public:bool isSubsequence(string s, string t) {int n = s.size(), m = t.size();vector<vector<int> > f(m + 1, vector<int>(26, 0));for (int i = 0; i < 26; i++) {f[m][i] = m;}for (int i = m - 1; i >= 0; i--) {for (int j = 0; j < 26; j++) {if (t[i] == j + 'a')f[i][j] = i;elsef[i][j] = f[i + 1][j];}}int add = 0;for (int i = 0; i < n; i++) {if (f[add][s[i] - 'a'] == m) {return false;}add = f[add][s[i] - 'a'] + 1;}return true;}
};

作者:LeetCode-Solution
链接:link
来源:力扣(LeetCode)

4)自己的优化代码

c++

class Solution {
public:bool isSubsequence(string s, string t) {int tlength=t.length();vector<vector<int>> dp(tlength+1,vector<int>(26,-1));for(int i=tlength-1;i>=0;i--){for(int j=0;j<26;j++){if(t[i]==char(j+'a'))dp[i][j]=i;else dp[i][j]=dp[i+1][j];}}int j=0;for(int i=0;i<s.length()&&j<tlength+1;i++){if(dp[j][s[i]-'a']==-1)return false;else j=dp[j][s[i]-'a']+1;}return true;}
};

5)学到的东西

双指针思想

动态规划思想

9、非递减数列(665、Easy)

1)题目要求

给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。

我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。

示例 1:

输入: nums = [4,2,3]
输出: true
解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。
示例 2:

输入: nums = [4,2,1]
输出: false
解释: 你不能在只改变一个元素的情况下将其变为非递减数列。

说明:

1 <= n <= 10 ^ 4

  • 10 ^ 5 <= nums[i] <= 10 ^ 5

2)我的解法

c++

class Solution {
public:bool checkPossibility(vector<int>& nums) {bool tag=false;for(int i=0;i<nums.size()-1;i++){if(nums[i]>nums[i+1]){if(tag)return false;else {if(i>0&&nums[i-1]>nums[i+1]&&i<nums.size()-2&&nums[i]>nums[i+2])return false;else tag=true;}}}return true;}
};

3)其他解法

在这里插入图片描述

class Solution {public boolean checkPossibility(int[] nums) {if(nums.length < 3){return true;}int count = 0;for(int i=0;i<nums.length-1;i++){if(nums[i] > nums[i+1]){count++;if(count > 1){break;}if(i-1 >=0&&nums[i-1] > nums[i+1]){nums[i+1] = nums[i];}else{nums[i] = nums[i+1];}}}return count <= 1;}
}

作者:but-2
链接:link
来源:力扣(LeetCode)。

4)自己的优化代码

c++

class Solution {
public:bool checkPossibility(vector<int>& nums) {bool tag=false;for(int i=0;i<nums.size()-1;i++){if(nums[i]>nums[i+1]){if(tag)return false;else {if(i>0&&nums[i-1]>nums[i+1]&&i<nums.size()-2&&nums[i]>nums[i+2])return false;else tag=true;}}}return true;}
};

5)学到的东西

贪心思想

10、最大子序和(53、Easy)

1)题目要求

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

示例:

输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
进阶:

如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。

2)我的解法

class Solution {public int maxSubArray(int[] nums) {int result=0,temp=0,temp1=0;if(nums.length==0)return 0;result=nums[0];temp=result;for(int i=1;i<nums.length;i++){temp1=nums[i];temp+=nums[i];if(temp1>=temp){temp=temp1;}result=Math.max(result,temp);}return result;}
}

3)其他解法

在这里插入图片描述


class Solution {
public:int maxSubArray(vector<int>& nums) {int pre = 0, maxAns = nums[0];for (const auto &x: nums) {pre = max(pre + x, x);maxAns = max(maxAns, pre);}return maxAns;}
};

作者:LeetCode-Solution
链接:link
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2、贪心

class Solution
{
public:int maxSubArray(vector<int> &nums){//类似寻找最大最小值的题目,初始值一定要定义成理论上的最小最大值int result = INT_MIN;int numsSize = int(nums.size());int sum = 0;for (int i = 0; i < numsSize; i++){sum += nums[i];result = max(result, sum);//如果sum < 0,重新开始找子序串if (sum < 0){sum = 0;}}return result;}
};

作者:pinku-2
链接:link
来源:力扣(LeetCode)

3、分治

在这里插入图片描述

public class Solution {public int maxSubArray(int[] nums) {int len = nums.length;if (len == 0) {return 0;}return maxSubArraySum(nums, 0, len - 1);}private int maxCrossingSum(int[] nums, int left, int mid, int right) {// 一定会包含 nums[mid] 这个元素int sum = 0;int leftSum = Integer.MIN_VALUE;// 左半边包含 nums[mid] 元素,最多可以到什么地方// 走到最边界,看看最值是什么// 计算以 mid 结尾的最大的子数组的和for (int i = mid; i >= left; i--) {sum += nums[i];if (sum > leftSum) {leftSum = sum;}}sum = 0;int rightSum = Integer.MIN_VALUE;// 右半边不包含 nums[mid] 元素,最多可以到什么地方// 计算以 mid+1 开始的最大的子数组的和for (int i = mid + 1; i <= right; i++) {sum += nums[i];if (sum > rightSum) {rightSum = sum;}}return leftSum + rightSum;}private int maxSubArraySum(int[] nums, int left, int right) {if (left == right) {return nums[left];}int mid = (left + right) >>> 1;return max3(maxSubArraySum(nums, left, mid),maxSubArraySum(nums, mid + 1, right),maxCrossingSum(nums, left, mid, right));}private int max3(int num1, int num2, int num3) {return Math.max(num1, Math.max(num2, num3));}
}

作者:liweiwei1419
链接: link
来源:力扣(LeetCode)

4)自己的优化代码

动态规划:

class Solution {public int maxSubArray(int[] nums) {int result=0,temp=0,temp1=0;if(nums.length==0)return 0;result=nums[0];temp=result;for(int i=1;i<nums.length;i++){temp=Math.max(nums[i],temp+nums[i]);result=Math.max(result,temp);}return result;}
}

贪心:

class Solution {public int maxSubArray(int[] nums) {int result=Integer.MIN_VALUE,sum=0;for(int i=0;i<nums.length;i++){sum+=nums[i];result=Math.max(sum,result);if(sum<0)sum=0;}return result;}
}

5)学到的东西

动态规划:后面结果依赖于前面部分的结果之上

贪心没有上述特点

没必要纠结这题到底属于什么类型,无论是动态规划还是贪心,能解出来就好

分治:
分开----合并
分类讨论

11、划分字母区间(763、Medium)

1)题目要求

字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。

示例 1:

输入:S = “ababcbacadefegdehijhklij”
输出:[9,7,8]
解释:
划分结果为 “ababcbaca”, “defegde”, “hijhklij”。
每个字母最多出现在一个片段中。
像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的片段数较少。

提示:

S的长度在[1, 500]之间。
S只包含小写字母 ‘a’ 到 ‘z’ 。

2)我的解法

class Solution {public List<Integer> partitionLabels(String S) {List<Integer> result=new ArrayList<>();int[] list=new int[26];Arrays.fill(list,-1);for(int i=0;i<S.length();i++){list[S.charAt(i)-'a']=i;}int j=0,end=0;for(int i=0;i<S.length();i++){end=Math.max(end,list[S.charAt(i)-'a']);j++;if(i==end){result.add(j);j=0;}}return result;}
}

3)其他解法


class Solution {public List<Integer> partitionLabels(String S) {int[] last = new int[26];for (int i = 0; i < S.length(); ++i)last[S.charAt(i) - 'a'] = i;int j = 0, anchor = 0;List<Integer> ans = new ArrayList();for (int i = 0; i < S.length(); ++i) {j = Math.max(j, last[S.charAt(i) - 'a']);if (i == j) {ans.add(i - anchor + 1);anchor = i + 1;}}return ans;}
}

作者:LeetCode
链接:link
来源:力扣(LeetCode)

4)自己的优化代码

c++

class Solution {public List<Integer> partitionLabels(String S) {List<Integer> result=new ArrayList<>();int[] list=new int[26];Arrays.fill(list,-1);for(int i=0;i<S.length();i++){list[S.charAt(i)-'a']=i;}int j=0,end=0;for(int i=0;i<S.length();i++){end=Math.max(end,list[S.charAt(i)-'a']);j++;if(i==end){result.add(j);j=0;}}return result;}
}

5)学到的东西

贪心思想

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. NDK22_音视频基础知识

    NDK开发汇总 文章目录一 音视频压缩1 音视频为什么需要压缩2 为什么可以压缩3 数据压缩分类无损压缩(Winzip)有损压缩(H.264)4 视频编码格式5 音频编码格式二 封装格式三 流媒体协议四 YUV简介H.264 I,P,B帧和PTS,DTS 一 音视频压缩软编解码:FFmpeg Android硬编解码:MediaC…...

    2024/4/29 21:15:05
  2. Go 实现热重启的详细介绍

    最近在优化公司框架 trpc 时发现了一个热重启相关的问题,优化之余也总结沉淀下,对 go 如何实现热重启这方面的内容做一个简单的梳理。1.什么是热重启?热重启(Hot Restart),是一项保证服务可用性的手段。它允许服务重启期间,不中断已经建立的连接,老服务进程不再接受新连…...

    2024/4/9 22:08:22
  3. Docker 入门

    1 Docker简介 1.1 什么是虚拟化 ​ 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。…...

    2024/5/7 10:02:30
  4. centos 8VMware虚拟机迁移ESXi 6.7

    centOS 8VMware虚拟机迁移ESXi 6.7 ** 在vm制作虚拟机的时候注意选择第一个单个文件 在完成配置后,将安装目录内的vmdk文件拷贝到EXSI6.7内上传完毕后,用ssh进入该文件目录 使用 vmkfstools -i RedHat.vmdk RedHatnew.vmdk -d thin 命令进行转换。(vm文件无法直接在exsi直…...

    2024/4/30 3:52:56
  5. Python机器学习教程详解

    本机器学习教程提供了机器学习的基本和中间概念。它是为完全入门的学生和专业工作人员而设计的。在本教程的最后,您不会成为机器学习方面的专家,但是您将能够制作能够执行复杂任务(例如,预测房屋价格或从尺寸识别虹膜的种类)的机器学习模型。花瓣和萼片的长度。如果您还不…...

    2024/5/7 0:55:01
  6. 最新的亚马逊收款的三种方式,你会选哪种?

    亚马逊收款的官方推荐的几种方式,比如P卡、wf卡,以及国内的连连支付、pingpong等等,在亚马逊开店收款方面,功能几乎都差不多,都可以支持亚马逊北美站、加拿大站、欧洲站、英国、日本站、澳洲站、印度站、阿联酋、新加坡、沙特站等全部站点的收款,然后提现到国内银行卡,没…...

    2024/5/7 6:15:49
  7. [Linux From Scratch 作一个自己的Linux操作系统发行版本]一、环境准备

    前言1. 物理系统2. VirtualBox3. CentOS7.7二、构建环境准备1.挂载/mnt/lfs分区2. 执行挂载指令3. 设置$LFS环境变量4. /mnt/lfs下创建系统目录5. 下载资源到sources目录执行下载查看以下在的软件源码及补丁总结前言接触Linux操作系统快10年了,终于下定决心自己构建一个属于自…...

    2024/4/17 15:51:11
  8. istio-cni详解

    概述 Istio 在网格中部署的Pod中注入initContainer,istio-init。该istio-init容器设置荚的网络流量重定向到/从Istio三轮代理。这就要求将用户或服务帐户部署到网格上的Pod具有足够的Kubernetes RBAC权限才能部署具有NET_ADMIN和NET_RAW功能的容器。对于某些组织的安全合规性,…...

    2024/4/29 17:25:29
  9. 闭关苦修8个月,最终靠着这2000道Java面试题,我成功拿到了阿里P7的offer

    前言我大概我是从去年12月份开始看书学习,到今年的6月份,一直学到看大家的面经基本上百分之90以上都会,我就在5月份开始投简历,边面试边补充基础知识等。也是有些辛苦。终于是在前不久拿到了阿里的offer,定级P7。我现在也来写面经,把我还能记住的,写下来,反馈给大家:一…...

    2024/5/2 8:16:55
  10. Redis崩了,我成功把锅甩给了隔壁组

    项目起不来了!... 项目又起不来了!... 又双叒叕???!!!上周经常听到组里同事说项目又双叒叕挂了, Redis连不上, 笔者在另一套正常的环境忙着开发新需求, 没空关心这个问题.(PS: 反正我的环境能用(థ౪థ)σ , 先忙完我的再说).于是乎, 看了一眼日志, 连接数过多... emmm, 顺…...

    2024/4/22 22:12:59
  11. Python + Appium + WebDriver搭建APP-GUI自动化测试环境

    Python + Appium + WebDriver搭建APP-GUI自动化测试环境前言 基础环境和工具的安装略过,包括:java-jdk,nodejs,python,pycharm 一、安装Appiumappium可通过安装文件安装如【Appium-windows-1.18.0-2】,安装后是一个桌面应用程序,可实现抓取ui等功能; 或者使用nodejs如【…...

    2024/5/1 0:04:45
  12. NDK24_FFmpeg集成及初始化

    NDK开发汇总 文章目录一 FFmpeg集成二 FFmpeg相关API常用结构体FFmpeg 解码的数据结构三 FFmpeg初始化(解码)1 Java层调用2 C++层解析,并在解析完成后回调javaDNFFmpegJavaCallHelper定义常量和一些宏定义 一 FFmpeg集成将静态库和头文件拷贝到项目中 静态库来源、CmakeList…...

    2024/4/29 15:33:26
  13. 【转】日邮物流:实现智慧物流,这个云上对了!

    和阳光、空气、水、网络一样,「物流」早已成为当代企业、个人赖以生存的必要条件。2020第一季度全球物流受疫情影响面临挑战,业内普遍预计全球物流及供应链将重新优化布局。借此时机,物流业纷纷将目光投向“数字化智慧物流”方向,其中就有一位供应链跨越46个国家及地区的行…...

    2024/4/29 21:39:49
  14. linux系统编程——套接字相关API学习

    socket(协议方案,数据流/快形式,附加协议)函数介绍: #include<sys/types.h> #include<sys/socket.h> int socket(int domain, int type, int protocol);//设置网络协议创建一个句柄,成功调用返回套接字描述符,失败返回错误码domain参数指明所使用的协议族,通…...

    2024/4/10 17:50:03
  15. Linux密码忘了怎么办?或者进入他人的Linux系统,我教你,拿去拿去别客气,安排(也可进入别人的Linux搞一搞)!!!!

    ** 对你说: ** 对于初学者的你,密码忘记,或者想进入别人的linux,在找方法吗?这些都是新奇的,我与你一样也是如此!我们共成长。 第一步:开机,你会看到如下: 进入这个页面后,把鼠标点进去:按e键进入引导界面如下: 你会看到如上图所示的界面,找到UTF-8。 找不到没关系…...

    2024/4/30 23:17:12
  16. Android 音频开发之AudioTrack实现音频播放

    一、前言 Android SDK 提供了两套播放音频的API,分别是:MediaPlayer和AudioTrack。两者还是有非常大的差别的。MediaPlayer会在framework层创建相应的音频解码器。所以能够播放多种格式的声音文件。比如MP3。AAC,WAV,OGG。MIDI等。而AudioTrack仅仅能播放已经解码的PCM流,…...

    2024/4/10 16:04:38
  17. RFID养老院人员定位解决方案浅析,你不知道的智慧养老-新导智能

    1 概述1.1 养老院人员定位布景跟着人口老龄化的趋势日益加快,老年人口越来越多,面临着许多老年人安全办理的事宜。苏州新导针对现在敬老院等大型公共场所等关于人员的进出办理和智能化区域、定位精确认位、求助报警的需求,商场上有各种不同类别的处理计划,从最初的GPS定位办…...

    2024/5/2 8:13:36
  18. ERP常用词汇

    ERP常用词汇ERP常用词汇(转发)(词汇表以英文字母顺序排列)A B C D E F G H I J K L M N O P Q R S T U V X Y ZA>>---------------------------------------------------------------ABC Classification--ABC分类法对于库存的所有物料,按照全年货币价值从大到小排序,…...

    2024/5/4 10:57:16
  19. 通俗易懂告诉你CPU/GPU/TPU/NPU...XPU都是些什么鬼

    现在这年代,技术日新月异,物联网、人工智能、深度学习等概念遍地开花,各类芯片名词GPU, TPU, NPU,DPU层出不穷......它们都是什么鬼?与CPU又是什么关系?搞不懂这些知识,买手机的时候都没法在妹子面前装B了呢。这是“物小白系列”的第1篇文章“亲爱的,听说HW最新发布了M…...

    2024/4/10 10:00:20
  20. 一款基于51单片机的遥控音乐播放器(附原理图和源代码)

    大家好,我是『芯知识学堂』的SingleYork,这篇文章是几年前在“电子芯吧客”论坛发表的一个关于点灯的DIY小创意。时隔几年了,今天再次分享给大家,希望能给感兴趣的小伙伴提供一个参考。说到点灯,可能大家再熟悉不过了,基本上是逢板必点灯啊!看那一篇篇开发板试用帖,几乎…...

    2024/4/23 9:46:47

最新文章

  1. 代码随想录算法训练营Day12 | 二叉树理论基础、递归遍历、迭代遍历、统一迭代

    今日收获&#xff1a; 二叉树的递归遍历二叉树的迭代遍历&#xff0c;中序的迭代法和前、后序不一样二叉树的统一迭代法主要是用了标记法来实现&#xff08;要处理的节点放入栈之后&#xff0c;紧接着放入一个空指针作为标记&#xff09; 二叉树理论基础篇 题目分类 题目分…...

    2024/5/7 10:46:03
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 论文阅读AI工具链

    文献检索 可以利用智谱清言来生成合适的文献检索式&#xff0c;并根据需要不断调整。 谷歌学术 在Google Scholar中进行检索时&#xff0c;您可以使用类似的逻辑来构建您的搜索式&#xff0c;但是语法会有所不同。Google Scholar的搜索框接受普通的文本搜索&#xff0c;但是…...

    2024/5/5 8:47:40
  4. ADB(Android Debug Bridge)操作命令详解及示例

    ADB&#xff08;Android Debug Bridge&#xff09;是一个强大的命令行工具&#xff0c;它是Android SDK的一部分&#xff0c;主要用于Android设备&#xff08;包括真实手机和平板电脑以及模拟器&#xff09;的调试、系统控制和应用程序部署。 下面是一些ADB的常用命令&#xff…...

    2024/5/5 8:28:21
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/6 18:23:10
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/6 18:40:38
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/6 23:37:19
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/6 7:24:07
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/7 0:32:52
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/6 6:01:13
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/6 7:24:06
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/7 1:54:46
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/6 20:04:22
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/7 0:32:51
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/6 7:24:04
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/6 7:24:04
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/6 19:38:16
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/6 7:24:03
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/7 0:32:49
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/6 21:25:34
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/6 7:24:02
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/7 7:26:29
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/7 0:32:47
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/6 16:50:57
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57