lc154.寻找旋转排序数组中的最小值

最小元素的位置=以旋转次数为索引的位置,但是没有告诉旋转次数,换一种思路

当遇到arr[index] > arr[index+1]时,index+1为最小元素的位置。首位位置独立比较。但是这种方法还是遍历数组

 观察两组数的中间值与首尾的值,又由于数组是分段升序的,我们可以列出以下情况

arr[left] < arr[index] < arr[right],此时说明最小值为left

arr[left] < arr[index] > arr[right],此时说明最小值在index~right

arr[left] > arr[index] < arr[right],此时说明最小值在left~index

arr[left] > arr[index] > arr[right],这种情况不可能

        arr[left] > arr[index]说明最小值在左侧,arr[index] > arr[right]说明最小值在右侧

代码

import org.junit.Test;public class LookForMin {@Testpublic void test() {int[] arr = new int[]{7, 8, 9, 11, 21, 23, 45, 0, 1, 2};//10int[] arr1 = new int[]{15, 2, 3, 5, 6, 8, 9, 11};//8int[] arr2 = new int[]{1, 3, 5};int[] arr3 = new int[]{2, 2, 2, 0, 1};int[] arr4 = new int[]{3, 3, 3, 1, 2};int[] arr5 = new int[]{3,3,1,3};int[] arr6 = new int[]{1,1};System.out.println(lookForMin(arr));System.out.println(lookForMin(arr1));System.out.println(lookForMin(arr2));System.out.println(lookForMin(arr3));System.out.println(lookForMin(arr4));System.out.println(lookForMin(arr6));}public static int lookForMin(int[] arr) {int left = 0, right = arr.length - 1;if (arr[right] > arr[left]) {return arr[left];} else {while (left < right) {int index = left + (right - left) / 2;while(arr[index] == arr[right] && right > 0){//right>0避免越界right--;}if (arr[left] <= arr[index] && arr[index] > arr[right]) {//等于是为了防止最终结束时left仍然保持不变导致结果错误left = index + 1;} else {right = index;}}}return arr[right];}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/12019.shtml

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

相关文章

vue动态引入静态资源

vue动态引入静态资源 静态资源位置&#xff08;../../assets/piecture/page404.jpg&#xff09;或者&#xff08;/assets/piecture/page404.jpg&#xff09; 错误引入方式 错误引入方式&#xff08;一&#xff09; <template><div><img :src"../../asset…

红茶三杯CCNA-课程笔记

简单记录CCNA学习内容 目前包含一些框架和简单内容 后续慢慢填充&#xff0c;除了课上所讲的内容&#xff0c;后续填充自设实验内容 01-网络基础 OSI网际互联 上 02-网络基础 OSI网际互联 下 03-TCPIP VLSM 04-CISCO IOS操作 05-路由选择原理 静态路由 06-动态路由选择原理 距…

视频剪辑矩阵分发系统Unable to load FFProbe报错技术处理?

问题一 报错处理 对于视频剪辑矩阵分发系统中出现的“Unable to load FFProbe”报错问题&#xff0c;可以采取以下技术处理措施进行解决。 1.检查系统中是否正确安装了FFProbe工具&#xff0c;并确保其路径正确配置。 2.检查系统环境变量是否正确设置&#xff0c;包括FFPr…

【安全】web中的常见编码浅析浏览器解析机制

目录 常见编码 一、ASCII码 二、URL编码 三、Unicode编码 四、HTML实体编码 结合编码理解浏览器解析机制 常见编码 一、ASCII码 ASCII (American Standard Code for Information Interchange&#xff0c;美国信息交换标准代码&#xff09; 计算机内部&#xff0…

《MySQL》第十二篇 数据类型

目录 一. 整数类型二. 浮点类型三. 日期和时间类型四. 字符串类型五. 枚举值类型六. 二进制类型七. 小结 MySQL 支持多种数据类型&#xff0c;学习好数据类型&#xff0c;才能更好的学习 MySQL 表的设计&#xff0c;让表的设计更加合理。 一. 整数类型 类型大小SIGNED(有符号)…

Django开发个人博客基本示例

以下是一个简单的 Django 个人博客开发示例。在这里只概述基本步骤和代码。请确保你已经安装了 Python 和 Django。 创建一个新的 Django 项目 django-admin startproject myblog进入项目目录并创建一个新的应用 cd myblogpython manage.py startapp blog在 blog/models.py 中…

Redis - 三大缓存问题(穿透、击穿、雪崩)

缓存穿透 概念&#xff1a; 查询一个数据库中也不存在的数据&#xff0c;数据库查询不到数据也就不会写入缓存&#xff0c;就会导致一直查询数据库 解决方法&#xff1a; 1. 缓存空数据 如果数据库也查询不到&#xff0c;就把空结果进行缓存 缺点是 - 消耗内存 2. 使用布…

【HMS Core】统一扫描连续扫码、闪光灯关闭问题

【问题描述1】 使用Default View Mode进行扫码&#xff0c;如何实现连续扫码 【解决方案】 在默认扫码模式Default View中&#xff0c;功能是集成在SDK内部的&#xff0c;无法设置连续扫码模式等信息。 可以使用Customized View Mode这种模式&#xff0c;它提供了相关的api可…

PythonNote042---pymysql使用

简单介绍pymysql的一些操作&#xff0c;增改删查 增 先建表&#xff0c;再写数据至表中 除查询操作外&#xff0c;增改删都需要commit操作&#xff0c;具体原理看ref.1 import pandas as pd import pymysql import time import warnings warnings.filterwarnings("igno…

【软件测试】什么是selenium

1.seleniumJava环境搭建 前置条件: Java最低版本要求为8,浏览器使用chrome浏览器 1.1下载chrome浏览器 https://www.google.cn/chrome/ 1.2查看浏览器版本 点击关于Google chrome. 记住版本的前三个数. 1.3下载浏览器驱动 http://chromedriver.chromium.org/downloads 下载…

HTTPS、DNS、正则表达式

HTTPS原理 HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是一种安全的通信协议&#xff0c;它基于HTTP协议&#xff0c;在数据传输过程中使用了加密技术来保护通信的安全性和完整性。HTTPS的工作原理主要包括以下几个步骤&#xff1a; 客户端发起HTTPS请求…

Python中的数据科学实验库有哪些?

Python中有许多数据科学实验库可供使用。以下是一些常用的库&#xff1a; NumPy&#xff1a;用于处理大型多维数组和矩阵的基础数学库。Pandas&#xff1a;用于数据处理和分析的库&#xff0c;提供了灵活的数据结构和数据操作工具。Matplotlib&#xff1a;用于创建静态、动态和…

CSS鼠标样式(cursor)

CSS cursor 属性值 属性值示意图描述auto默认值&#xff0c;由浏览器根据当前上下文确定要显示的光标样式default 默认光标&#xff0c;不考虑上下文&#xff0c;通常是一个箭头none不显示光标initial将此属性设置为其默认值inherit从父元素基础 cursor 属性的值context-menu…

“深入理解Spring Boot:从入门到进阶“

标题&#xff1a;深入理解Spring Boot&#xff1a;从入门到进阶 摘要&#xff1a;本文将介绍Spring Boot的基本概念、核心特性以及进阶用法&#xff0c;通过详细的示例代码帮助读者深入理解Spring Boot的使用和原理。 正文&#xff1a; Spring Boot简介 Spring Boot是一个基于…

微信小程序中使用echarts方法

小程序中使用echarts echarts是一个基于JS的数据可视化图标库&#xff0c;它提供了直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性定制的数据可视化图表。一般在vue中会使用到&#xff0c;并且官网也详细的说明了如何在vue中使用&#xff0c;但是今天我想来探讨的…

vue-echarts配置项详解

起因 最近接手了一个vue3项目&#xff0c;echarts用的是"vue-echarts": “^6.0.0”&#xff0c;每次查看文档的时候痛苦不已&#xff0c;找一个配置要花费大量时间&#xff0c;所以这篇文章&#xff0c;主要就是为了记录比较常见的一些配置。 主要会写三种图的配置…

SAP财务系统中的“增值税”

1. 前言 在前一篇博客《SAP财务系统中的“复式记账法”》中&#xff0c;介绍了复式记账的基本原理&#xff0c;同时给出了在采购和销售流程中常见的记账科目&#xff0c;但也遗留了一些知识点&#xff0c;例如增值税等概念。 在本篇博客中&#xff0c;我们将覆盖这些知识点&a…

二、SQL-5.DQL-8).案例练习

1、查询年龄为20,21,22,23岁的员工信息 select * from emp where age in(20, 21, 22, 23) and gender 女; 2、查询性别为男&#xff0c;并且年龄在20-40岁&#xff08;含&#xff09;以内的姓名为三个字的员工 select * from emp where gender 男 && age between 2…

如何进行SQL优化

一、SQL优化的主要步骤 在应用的的开发过程中&#xff0c;由于初期数据量小&#xff0c;开发人员写 SQL 语句时更重视功能上的实现&#xff0c;但是当应用系统正式上线后&#xff0c;随着生产数据量的急剧增长&#xff0c;很多 SQL 语句开始逐渐显露出性能问题&#xff0c;对生…

Electron 学习_BrowserWindow

BrowserWindow创建并控制浏览器窗口(主进程) 条件&#xff1a;在 app 模块 emitted ready 事件之前&#xff0c;您不能使用此模块。 1.在加载页面时&#xff0c;渲染进程第一次完成绘制时&#xff0c;如果窗口还没有被显示&#xff0c;渲染进程会发出 ready-to-show 事件 。 在…