剑指 Offer 11. 旋转数组的最小数字

题目:

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。

 

代码1:  

复制代码
 1 class Solution {
 2     public int minArray(int[] numbers) {
 3         if(numbers.length==1){return numbers[0];}  //长度为1,直接输出
 4         else{
 5             for(int i=1;i<numbers.length;i++){  
 6                 if(numbers[i]<numbers[i-1]){        //当发生旋转且长度小于n-1时,旋转数字和未旋转数字边界时由大变小关系
 7                     return numbers[i];
 8                 }
 9             }
10             return numbers[0];                        //当旋转长度为n时,即数组未发生变化,numbers[0]就是最小数字
11         }
12     }   
13 }
复制代码

 

 代码2:

复制代码
 1 class Solution {
 2 
 3   public int minArray(int[] numbers) {
 4 
 5if(numbers.length==1){return numbers[0];} //长度为1,直接输出
 6 
 7 ​      Arrays.sort(numbers);   //利用排序算法
 8 
 9return numbers[0];
10   }  
11 }
复制代码

 

代码3:

复制代码
 1 class Solution {
 2 
 3   public int minArray(int[] numbers) {
 4 
 5if(numbers.length==1){return numbers[0];} //长度为1,直接输出
 6 
 7 ​    TreeSet<Integer> ts=new TreeSet<>();
 8 
 9for(int i=0;i<numbers.length;i++){
10 
11 ​       ts.add(numbers[i]);
12 
13 ​     }
14 
15return ts.first();
16 
17   }  
18 
19 }
复制代码

 

posted @   堤苏白  阅读(19)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示