当前位置: 首页 > news >正文

581 Shortest Unsorted Continuous Subarray

weekly contest 32的第一题。这题我一开始就想着把每个子串都拿出来sort一遍再放回去,跟sort完的对比一下。但是复杂度太高(O(n2)), TLE了(但是用熟了System.arraycopy(nums, 0, temp, 0, nums.length);这个方法。。)。 如下:

Approach 1: BRUTE FORCE(TIME LIMIT EXCEEDED)

	public int findUnsortedSubarray(int[] nums) {
		if (nums == null || nums.length == 0) return 0;

		int sorted[] = new int[nums.length];
		System.arraycopy(nums, 0, sorted, 0, nums.length);

		Arrays.sort(sorted);
		if (Arrays.equals(sorted, nums)) return 0;

		int minLen = nums.length;
		for (int i = 0; i < nums.length; i++) {
			for (int j = i + 1; j < nums.length; j++) {
				int temp[] = new int[nums.length];
				System.arraycopy(nums, 0, temp, 0, nums.length);
				Arrays.sort(temp, i, j + 1);
				if (Arrays.equals(sorted, temp)) {
					minLen = Math.min(j + 1 - i, minLen);
					break;
				}
			}
		}
		return minLen;
	}
复制代码

#Approach 2: Compare the sorted parts 从首位开始跟sort过的array相比。Time : O(nlogn)。

	public int findUnsortedSubarray(int[] nums) {
		int [] temp = new int[nums.length];
		System.arraycopy(nums,0 , temp , 0 , nums.length);
		Arrays.sort(temp);
		int start = 0 , end = nums.length -1 ;
		while (start< nums.length && temp[start] == nums[start] ){
			start ++ ;
		}
		while (end> start && temp[end] == nums[end]){
			end -- ;
		}
		return end + 1 - start;
	}
复制代码

还看到有一种O(n)的解法,现在脑子晕了不想看了。

ref: https://discuss.leetcode.com/topic/89282/java-o-n-time-o-1-space https://discuss.leetcode.com/category/741/shortest-unsorted-continuous-subarray Java拷贝数组的几种方法: http://www.cnblogs.com/jjdcxy/p/5870524.html

转载于:https://juejin.im/post/5a313159f265da431523e964

相关文章:

  • v4l2 Camera详细设置【转】
  • iOS核心动画高级技术(十三) 高效绘图
  • ant任务调用和参数传递
  • 好玩的 RAC
  • Matlab2013a许可证过期问题,反复提示激活
  • 北京司法网拍首尝线下预展 海淀法院900万红木家具亮相京东秋拍
  • java进阶-常用数据结构以及算法思想
  • Nginx服务状态的监控
  • spring cloud Dalston.SR4 feign 实际开发中踩坑(二)
  • Kibana插件sentinl实现邮件报警
  • Vue slot分发内容
  • 前端面试总结(at, md)
  • Webpack入门之遇到的那些坑,系列示例Demo
  • Unity 微型调试器 Debugger
  • CSS文本超出省略
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 30天自制操作系统-2
  • GraphQL学习过程应该是这样的
  • js操作时间(持续更新)
  • mockjs让前端开发独立于后端
  • Python打包系统简单入门
  • Redis 懒删除(lazy free)简史
  • scrapy学习之路4(itemloder的使用)
  • Spark RDD学习: aggregate函数
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Spring-boot 启动时碰到的错误
  • storm drpc实例
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 阿里云Kubernetes容器服务上体验Knative
  • 电商搜索引擎的架构设计和性能优化
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 近期前端发展计划
  • 让你的分享飞起来——极光推出社会化分享组件
  • 携程小程序初体验
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • %check_box% in rails :coditions={:has_many , :through}
  • (0)Nginx 功能特性
  • (3)(3.5) 遥测无线电区域条例
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (pojstep1.1.2)2654(直叙式模拟)
  • (ros//EnvironmentVariables)ros环境变量
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (全注解开发)学习Spring-MVC的第三天
  • (三十五)大数据实战——Superset可视化平台搭建
  • (四)c52学习之旅-流水LED灯
  • (四)汇编语言——简单程序
  • ./configure,make,make install的作用(转)
  • .gitignore