LeetCode Search in Rotated Sorted Array

news/2025/4/22 1:20:54

题目:

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

题意:

给定一个已经排好序的数组,然后按照某个元素旋转,给定一个目标数字,求在这个旋转数组中出现这个目标数字的位置(下标),如果没有出现,那么返回-1,否则返回出现的下标。

题解:

采用和之前的搜索旋转数组的最小元素的方法,先找到那个最小的元素,用二分搜索找,找到这个元素也就意味着找到了分界点,这个最小元素左边的必定大于这个元素,而且已经排好序了,这个最小元素右边的必定也大于这个元素,而且也已经排好序了。但是为了防止出现超时现象,有几种特殊情况需要当心,首先是当这个数组的长度只为1,那么我们只要查看这个头元素是否等于target,如果相等,那么直接返回0,否则就返回-1,也就不用去执行了;如果找到这个最小元素的位置,也就是分界点,那么查看这个分界点的值是不是等于target,如果相等,直接返回这个分界点的位置(下标),否则如果这个分界点是0,那么只要做一遍二分搜索即可,否则对分界点两边都要做一遍二分搜索。

public int search(int[] nums,int target){int length = nums.length;if(length == 1 && nums[0] == target)return 0;else if(length == 1 && nums[0] != target)return -1;int min = searchBinary(nums,0,length - 1);if(nums[min] == target)return min;if(min == 0)return binary(nums,0,length - 1,target);System.out.println(min);if(binary(nums,0,min -1,target) != -1)return binary(nums,0,min -1,target);else if(binary(nums,0,min -1,target) == -1){if(binary(nums,min,length - 1,target) != -1)return binary(nums,min,length - 1,target);else return -1;}return -1;}public int searchBinary(int[] nums,int start,int end){int length = nums.length;if(nums[start] < nums[end])return start;while(nums[start] >= nums[end]){if(start + 1 == end)return end;int mid = (start + end) / 2;if(nums[mid] >= nums[start])start = mid;else if(nums[mid] <= nums[end])end = mid;}return end;}public int binary(int[] nums,int start,int end,int target){if(start <= end){int mid = (start + end) / 2;if(nums[mid] == target)return mid;if(nums[mid] < target)return binary(nums,mid + 1,end,target);else if(nums[mid] > target)return binary(nums,start,mid - 1,target);}return -1;}



https://dhexx.cn/news/show-2654235.html

相关文章

Use zabbix to Monitor your servers

为什么80%的码农都做不了架构师&#xff1f;>>> 本次主要介绍一款开源免费的分布式监控软件Zabbix的安装使用&#xff0c;底层存储数据用的是Postgres 9.1&#xff0c;以下是步骤&#xff1a; 1.准备 下载zabbix的服务端和客户端文件&#xff0c; 下载地址&#xf…

vue + ueditor 单图片跨域上传

UEditor官网说不提供单图片的跨域&#xff0c;所以只能自己解决。查了网上的很多方案&#xff0c;但是没看到和vue一起用的&#xff0c;不过倒是获得了一些思路。本着不想改太多源代码的基础上尝试着...一不小心就可以用了解决方案&#xff1a;上传单图片的时后端不直接返回JSO…

LeetCode Search in Rotated Sorted Array II

题目&#xff1a; Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this affect the run-time complexity? How and why? Write a function to determine if a given target is in the array. 题意&#xff1a; 继续上…

管理Oracle实例

前言 正常生产环境下往往是通过应用服务器来与Oracle数据库相连接&#xff0c;大多数使用Oracle的开发语言以Java为主&#xff0c;针对于Java的中间件有很多&#xff0c;我们这里具体来看一下Oracle整体产品线的WLS产品 安装Weblogic 执行上图所示命令&#xff0c;启动WLS安装页…

sklearn学习——特征处理

sklearn学习——特征处理 特征提取(feature extraction): 从文字&#xff0c;图像&#xff0c;声音等其他非结构化数据中提取新信息作为特征。比如说&#xff0c;从淘宝宝贝的名称中提取出产品类别&#xff0c;产品颜色&#xff0c;是否是网红产品等等。 特征创造(feature cre…

环境变量问题

软件出现下面的问题&#xff1a; 解决方法&#xff1a; 直接用export命令&#xff1a;#export PATH$PATH:/usr/local/sbin:/usr/sbin:/sbin

粒子群优化支持向量机代码(PSO-SVM)

粒子群优化支持向量机代码 数据WFs1 import pandas as pd import numpy as np import random from sklearn.svm import SVC import matplotlib.pyplot as plt from sklearn.model_selection import cross_val_predict from sklearn.metrics import confusion_matrix from skl…

LeetCode Bulb Switcher

题目&#xff1a; There are n bulbs that are initially off. You first turn on all the bulbs. Then, you turn off every second bulb. On the third round, you toggle every third bulb (turning on if its off or turning off if its on). For the nth round, you only …

C++操作MySQL,有用的朋友顶下,辛苦的原创啊. - 天下 - C++博客

C操作MySQL,有用的朋友顶下,辛苦的原创啊. - 天下 - C博客C操作MySQL,有用的朋友顶下,辛苦的原创啊.向google大神搜 :mysql-connector得http://www.mysql.com/products/connector/这些就是mysql所谓的连接器吧.一路向下看到:C Wrapper for MySQL C API (MySQL) Download http:/…

sklearn学习——递归特征消除法(RFE)

sklearn学习——递归特征消除法&#xff08;RFE&#xff09; 1 作用 消除特征之间的冗余&#xff0c;选取最优特征组合。降低特征维数。 2 步骤 将筛选的k个特征作为初始特征子集输入到随机森林分类器中&#xff0c;计算得到每个特征的重要性&#xff0c;并利用交叉验证方法…