leetcode - 旋转数组的最小数字
时间:2022-07-22
本文章向大家介绍leetcode - 旋转数组的最小数字,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1
示例
示例 1:
输入:[3,4,5,1,2]
输出:1
示例 2:
输入:[2,2,2,0,1]
输出:0
题解
首先我们理解下,什么是旋转?什么是反转?旋转在本题中出题人已经在第一句话给出定义,翻译一下就是一个数组,从左边打头的1个、2个.....n个搬到数组右边,简单点get这个点就是左边出右边进这种模型。而反转就是保持原来的姿势旋转180度。例如ataola
反个面就是aloata
,这两个概念不要搞混淆。
其次,出题人已经给出提示,[3, 4, 5, 1, 2]为 [1, 2, 3, 4, 5]的一个旋转。如果这题改成给定一个递增排序的数组,输出其所有的旋转,难度会比这个稍微难一点点,但也还是简单的。
我们先从示例1,列举出递增数组[1, 2, 3, 4, 5]的所有可能旋转的情况。它们分别是[2, 3, 4, 5, 1], [3, 4, 5, 1, 2], [4, 5, 1, 2, 3],[5, 1, 2, 3, 4]这几种可能的情况。
然而、它跟我们这题关系其实不大,你管它是哪个旋转,把输入的数组一把sort。返回打头的那位,没了结束了,核心代码就一行。
// https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/
/**
* @param {number[]} numbers
* @return {number}
*/
var minArray = function(numbers) {
return numbers.sort((a, b) => a - b)[0];
};
那么,进一步思考下,假如我不会sort,我就硬着头皮找,怎么写?一把遍历出结果。
var minArray = function(numbers) {
var min = numbers[0];
for (const val of numbers) {
min = min > val ? val : min;
}
return min;
};
自己挖的坑,自己埋。前面我们讲到了这题的变种就是给定一个排好序的数组,输出其所有的可能的旋转情况,具体的实现如下:
var getTranslateArray = function(numbers) {
var res = {
arr: [],
count: 0,
}
for (var i = 0; i < numbers.length - 1; i++) {
numbers.push(numbers.shift());
res.arr.push(numbers);
res.count ++;
}
return res;
}
参考文献
154-旋转数组的最小数字:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/
- Windows Phone 7 WebBrowser 中文乱码问题
- Java并发包类总览
- 作业调度框架 Quartz.NET 2.0 beta 发布
- 系统捕获异常并发送到服务器
- 当调用GetAuthorizationGroups() 的错误-“试图访问卸载的应用程序域“(Exception from HRESULT: 0x80131014)解决方案
- WCF 4.0路由服务Routing Service
- ExpandableListView简单应用及listview模拟ExpandableListView
- 文件句柄与文件描述符
- android GifView分享
- VAE、GAN、Info-GAN:全解深度学习三大生成模型
- android获取设备唯一标示
- 如果正确读取SQL Server中的扩展事件?
- android自定义xmls文件属性
- 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
- Python如何实现后端自定义认证并实现多条件登陆
- safari下载文件自动加了html后缀问题
- yii2 上传图片的示例代码
- DataFrame.groupby()所见的各种用法详解
- keras训练曲线,混淆矩阵,CNN层输出可视化实例
- Pandas缺失值2种处理方式代码实例
- ThinkPHP5 的简单搭建和使用详解
- PyInstaller运行原理及常用操作详解
- php使用curl模拟浏览器表单上传文件或者图片的方法
- Python轻量级web框架bottle使用方法解析
- 详解在YII2框架中使用UEditor编辑器发布文章
- 基于python和flask实现http接口过程解析
- Python xpath表达式如何实现数据处理
- Python脚本破解压缩文件口令实例教程(zipfile)