当前位置:网站首页>LeetCode581+621+207
LeetCode581+621+207
2022-08-04 09:13:00 【想进阿里的小菜鸡】
用了一个很巧妙的方法做出来的。
以nums = [2,6,4,8,10,9,15]为例,叙述思路。
思路
假如我们找到左边第一个开始下降的点和右边第一个开始上升的点,那么这两个点中点的所有点都需要排序。但是会有一种情况时[1,3,3,2]。所以我们需要找到的是左边第一个比右边最小的值大的点作为start,在右边找到第一个比左边最大值大的点是end,这样,这两个点中间的所有值就是要排序的点。其实本质还是找左边第一个开始下降的点和右边第一个开始上升的点。
左边最大值又没有说范围,所以不能直接求最大值,这里可以用一边遍历,一遍求的方式。我们可以用for循环来边遍历,边比较。max先设置为nums[0],然后从下标为1的位置开始遍历,每次遍历就先找两个数中最大的数,然后用当前i位置的数和max比较,如果当前i位置的数比max小,
end就是i。找start同理的。
总结就是end是正序遍历,start是倒序遍历。
代码
class Solution {
public int findUnsortedSubarray(int[] nums) {
int start = 0;
int length = nums.length;
int end = 0;
int min = nums[length-1];
int max = nums[0];
for(int i= 1;i<length;i++){
max = Math.max(nums[i],max);
min = Math.min(nums[length-i-1],min);
if(nums[i]<max){
end = i;
}
if(nums[length-i-1]>min){
start =length-i-1;
}
}
if(end == start){
return 0;
}
return end-start+1;
}
}思路
这道题也是看的题解解决的。大家可以看这位大佬的题解,画的图很不错。用的是贪心算法。
代码
class Solution {
public int leastInterval(char[] tasks, int n) {
int[] table = new int[26];
for(char s:tasks){
table[s-'A']++;
}
int maxCount = 0;
for(int i = 0;i<table.length;i++){
maxCount = Math.max(table[i],maxCount);
}
int res = (maxCount-1)*(n+1);
int temp = 0;
for(int i = 0;i<table.length;i++){
if(table[i]!=0){
temp++;
}
}
return Math.max((res+temp),tasks.length);
}
}思路
先构造图,然后用dfs遍历图,在遍历的时候判断图是否有圈,有圈就说明是不可能上完的。
代码
class Solution {
public boolean canFinish(int numCourses, int[][] prerequisites) {
int[] flages = new int[numCourses];//记录当前节点是否被访问过。正在访问是1,访问后是2.
List<ArrayList<Integer>> graph = new ArrayList(numCourses);
for(int i = 0;i<numCourses;i++){
graph.add(new ArrayList<Integer>());
}
//以上是初始化图的存储结构.
for(int i = 0;i<prerequisites.length;i++){
int course = prerequisites[i][0];
int pre = prerequisites[i][1];
// 下标为course的数组里面的内容是course的所有前置课程
graph.get(course).add(pre);
}
//以上是将图中赋值。
//下面用dfs遍历图,并且判断图中是否有圈
for (int i = 0; i < numCourses; i++) {
if (dfs(i, flages, graph) == true) {
return false;
}
}
return true;
}
public boolean dfs(int cur, int[] flages, List<ArrayList<Integer>> graph){
if(flages[cur] == 1){
return true;
}
if(flages[cur] == 2){
return false;
}
flages[cur] = 1;
for(Integer preNode:graph.get(cur)){
if(dfs(preNode,flages,graph) == true){
return true;
}
}
flages[cur] = 2;
return false;
}
}边栏推荐
- MindSpore:【model_zoo】【resnet】尝试用THOR优化器运行时报cannot import name ‘THOR‘
- 将jpg图片转换成yuv420(NV12)数据文件
- It is found that several WRH tables are locked, what should I do?
- ShowMeAI —— Show u 三连
- Inheritance and the static keyword
- Detailed explanation of switch link aggregation [Huawei eNSP]
- 用OpenGL绘制winXP版扫雷的笑脸表情
- The separation configuration Libpq is supported, speaking, reading and writing
- 优炫数据库只有数据文件如何恢复
- 思想茶叶蛋 (Jul 31,2022)| 元宇宙(Metaverse)下了一枚什么样的蛋
猜你喜欢

NAT/NAPT地址转换(内外网通信)技术详解【华为eNSP】

架构设计杂谈

Apache Druid 实时分析数据库入门介绍

After four years of outsourcing, the autumn recruits finally landed

MindSpore:【model_zoo】【resnet】尝试用THOR优化器运行时报cannot import name ‘THOR‘

Anton Paar Anton Paar Density Meter Hydrometer Repair DMA35 Performance Parameters

leetcode经典例题——49.字母异位词分组

Fiddler(二)-手机抓包502错误解决方法

ISO14443A读卡流程(作为示例参考)

ZbxTable 2.0 重磅发布!6大主要优化功能!
随机推荐
MindSpore:mirrorpad算子速度过慢的问题
如何快速将Zabbix5.0升级至6.0?
[Punctuality Atomic STM32 Serial] Chapter 1 Learning Method of the Book Excerpted from [Punctuality Atomic] MiniPro STM32H750 Development Guide_V1.1
Detailed explanation of NAT/NAPT address translation (internal and external network communication) technology [Huawei eNSP]
基于cRIO-904X搭建Simulink与Labview环境
如何从PG导入数据到kingbaseES
[Punctuality Atom STM32 Serial] Chapter 2 STM32 Introduction Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1
思想茶叶蛋 (Jul 31,2022)| 元宇宙(Metaverse)下了一枚什么样的蛋
Anton Paar Anton Paar Density Meter Hydrometer Repair DMA35 Performance Parameters
MindSpore:Ascend运行出现问题
预测性维护学习之路
SQL后计算的利器
leetcode经典例题——56.合并区间
It is found that several WRH tables are locked, what should I do?
[Cloud Residency Co-Creation] HCSD Celebrity Live Streaming – Employment Guide
ISO14443A读卡流程(作为示例参考)
下午14:00面试,14:08低着头出来了 ,问的实在是太...
字符串与正则表达式(C#)
2022-08-02 分析RK817 输出32k clock PMIC_32KOUT_WIFI给WiFi模块 clock 注册devm_clk_hw_register
leetcode经典例题——49.字母异位词分组