java笔试常考算法 java算法笔试题及答案.docxVIP

  • 3
  • 0
  • 约9.62千字
  • 约 34页
  • 2026-06-27 发布于河南
  • 举报

java笔试常考算法 java算法笔试题及答案.docx

java笔试常考算法java算法笔试题及答案

1.基础算法模块

1.1搜索旋转排序数组

题目描述:整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0=knums.length)上进行了旋转,使数组变为[nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]]。给你旋转后的数组nums和一个整数target,如果nums中存在这个目标值target,则返回它的下标,否则返回-1,要求时间复杂度为O(logn)。

解题思路:旋转后的数组可拆分为两段独立的升序子数组,利用二分查找缩小搜索范围:首先判断mid指针落在左升序段还是右升序段,再判断target是否落在当前段的有序区间内,若存在则缩小范围到当前段,否则跳转至另一段搜索。

Java实现:

```java

publicintsearch(int[]nums,inttarget){

while(left=right){

intmid=left+(right-left)/2;

if(nums[mid]==target)returnmid;

//判断mid是否在左升序段

if(nums[left]=nums[mid]){

//ta

文档评论(0)

1亿VIP精品文档

相关文档