首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java交换数组中具有所选数字的最小数字

可以通过以下步骤实现:

  1. 遍历数组,找到具有所选数字的最小数字。
  2. 使用一个变量来保存最小数字的索引。
  3. 遍历数组,找到具有所选数字的最小数字的索引。
  4. 使用一个临时变量来保存最小数字。
  5. 将最小数字与所选数字进行交换。
  6. 返回交换后的数组。

以下是一个示例代码:

代码语言:txt
复制
public class ArraySwap {
    public static void main(String[] args) {
        int[] array = {5, 2, 8, 3, 1, 9};
        int selectedNumber = 3;

        int minIndex = -1;
        int minValue = Integer.MAX_VALUE;

        // 找到具有所选数字的最小数字的索引
        for (int i = 0; i < array.length; i++) {
            if (array[i] == selectedNumber && array[i] < minValue) {
                minIndex = i;
                minValue = array[i];
            }
        }

        // 交换最小数字与所选数字
        if (minIndex != -1) {
            int temp = array[minIndex];
            array[minIndex] = selectedNumber;
            array[array.length - 1] = temp;
        }

        // 打印交换后的数组
        for (int num : array) {
            System.out.print(num + " ");
        }
    }
}

这段代码会输出交换后的数组,其中具有所选数字的最小数字会被交换到数组的最后一个位置。

对于这个问题,腾讯云提供了多种相关产品和服务,如云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。你可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于腾讯云的信息和产品介绍。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

寻找旋转数组最小数字

前言 把一个数组最开始若干个元素搬到数组末尾,就称之为数组旋转。有一个递增排序数组,将其开头若干个元素移动至数组末尾,寻找其中最小值。...本文就跟大家分享下如何用最快速度找到递增旋转数组最小值,欢迎各位感兴趣开发者阅读本文。 实现思路 乍一看这个问题,一部分开发者首先想到解法就是从头到尾遍历下数组,这样就能找出最小元素。...经过一番观察后,我们可以发现: 旋转后数组可以划分为两个已经排序数组 前面子数组元素都大于等于后面子数组元素 最小数字是这两个子数组分界线 二分查找 经过上面的分析,我们可知旋转后数组在一定程度上是排好序...,那么最小值一定在中间元素前面,移动右指针至中间值位置缩小查找范围 左指针一定指向前面的递增子数组,右指针一定指向后面的递增子数组 当左、右指针相邻时,右指针所指向元素就是这个数组最小值 时间复杂度分析...// 输入一个递增排序数组一个旋转,输出旋转数组最小元素。 // 例如,数组[3,4,5,1,2]为[1,2,3,4,5]一个旋转,该数组最小值为1。

51530

旋转数组最小数字

题目:把一个数组最开始若干个元素搬到数组末尾,我们称之为数组旋转。输入一个递增排序数组一个旋转,输出旋转数组最小元素。...例如数组{3,4,5,1,2}为{1,2,3,4,5}一个旋转,该数组最小值为1. 实现数组旋转见左旋转字符串。 和二分查找法一样,用两个指针分别指向数组第一个元素和最后一个元素。...我们注意到旋转之后数组实际上可以划分为两个排序数组,而且前面的子数组元素都大于或者等于后面子数组元素。我们还可以注意到最小元素刚好是这两个子数组分界线。...,我们无法判断中间数字是位于前面的字数组还是后面的子数组,也就无法移动两个指针来缩小查找范围。...这是一个经典的话题,如何计算二分查找中值?

58880

旋转数组最小数字

,我们称之为数组旋转。...输入一个非递减排序数组一个旋转,输出旋转数组最小元素。解题思路将旋转数组对半分可以得到一个包含最小元素新旋转数组,以及一个非递减排序数组。...新旋转数组长度是原数组一半,从而将问题规模减少了一半,这种折半性质算法时间复杂度为 O(log2N)。此时问题关键在于确定对半分得到两个数组哪一个是旋转数组,哪一个是非递减数组。...通过修改二分查找算法进行求解(l 代表 low,m 代表 mid,h 代表 high):当 nums[m] <= nums[h] 时,表示 [m, h] 区间内数组是非递减数组,[l, m] 区间内数组是旋转数组...例如对于数组 {1,1,1,0,1},l、m 和 h 指向数都为 1,此时无法知道最小数字 0 在哪个区间。

12810

旋转数组最小数字

题目描述 把一个数组最开始若干个元素搬到数组末尾,我们称之为数组旋转。 输入一个非减排序数组一个旋转,输出旋转数组最小元素。...例如数组{3,4,5,1,2}为{1,2,3,4,5}一个旋转,该数组最小值为1。 NOTE:给出所有元素都大于0,若数组大小为0,请返回0。 解题思路 采用二分查找法。...需要考虑三种情况: array[mid] > array[high]: 出现这种情况array类似[3,4,5,6,0,1,2],此时最小数字一定在mid右边。...low = mid + 1 array[mid] == array[high]: 出现这种情况array类似 [1,0,1,1,1] 或者[1,1,1,0,1],此时最小数字不好判断在mid左边...还是右边,这时只好一个一个试 high = high - 1 array[mid] < array[high]: 出现这种情况array类似[2,2,3,4,5,6,6],此时最小数字一定就是

45220

旋转数组最小数字

题目描述 把一个数组最开始若干个元素搬到数组末尾,我们称之为数组旋转。 输入一个非递减排序数组一个旋转,输出旋转数组最小元素。...例如数组{3,4,5,1,2}为{1,2,3,4,5}一个旋转,该数组最小值为1。 NOTE:给出所有元素都大于0,若数组大小为0,请返回0。...] > array[high]: 出现这种情况array类似[3,4,5,6,0,1,2],此时最小数字一定在mid右边。...low = mid + 1 (2)array[mid] == array[high]: 出现这种情况array类似 [1,0,1,1,1] 或者[1,1,1,0,1],此时最小数字不好判断在mid...左边 还是右边,这时只好一个一个试 , high = high - 1 (3)array[mid] < array[high]: 出现这种情况array类似[2,2,3,4,5,6,6],此时最小数字一定就是

24240

数组重复数字

题目描述 在一个长度为n数组所有数字都在0到n-1范围内。 数组某些数字是重复,但不知道有几个数字是重复。也不知道每个数字重复几次。请找出数组任意一个重复数字。...例如,如果输入长度为7数组{2,3,1,0,2,5,3},那么对应输出是第一个重复数字2。 解题思路 最简单就是用一个数组或者哈希表来存储已经遍历过数字,但是这样需要开辟额外空间。...如果题目要求不能开辟额外空间,那我们可以用如下方法: 因为数组数字都在0~n-1范围内,所以,如果数组没有重复数,那当数组排序后,数字i将出现在下标为i位置。...现在我们重排这个数组,从头到尾扫描每个数字,当扫描到下标为i数字时,首先比较这个数字(记为m)是不是等于i。...i个数字和第m个数字交换,把m放到属于它位置。

2K30

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] 输出:...旋转在本题中出题人已经在第一句话给出定义,翻译一下就是一个数组,从左边打头1个、2个.....n个搬到数组右边,简单点get这个点就是左边出右边进这种模型。而反转就是保持原来姿势旋转180度。...我们先从示例1,列举出递增数组[1, 2, 3, 4, 5]所有可能旋转情况。...numbers.push(numbers.shift()); res.arr.push(numbers); res.count ++; } return res; } 参考文献 154-旋转数组最小数字

32630

获取数组最小k个数字_29

思路:利用小根堆 面试或者其他啥情况估计是不允许大家直接用优先级队列,所以我们还是老老实实实现一个堆结构吧; 关于堆结构以及其相应实现大家可以看我之前一个笔记https://www.jianshu.com...notebooks/40413732/notes/55370532 我们这里和普通堆排序和堆数据修改有一点区别,那就是这里我们需要先实现一个小根堆,然后每一次拿第一个数据然后把这个数据删掉,但是我们这里存在一个问题,数组不太好删数据...,删除的话要进行一个所有数据前移,因此, 我这里取了个巧,我把第一个数字和最后一个数字交换,然后我当这个数组长度减了1,当最后一个数字不存在,然后会进行一个从顶到下重建,同理第二大数字出来后与倒数第二个交换...currIndex); } } /** * 堆平衡 * 当某个节点发送变化了,那么其子树就需要重新维持平衡 * param 堆,修改位置,堆数组大小...currIndex); } } /** * 堆平衡 * 当某个节点发送变化了,那么其子树就需要重新维持平衡 * param 堆,修改位置,堆数组大小

39210

旋转数组最小数字_06

要点 旋转之后数组实际上可以划分成两个有序数组:前面子数组大小都大于后面子数组元素 注意到实际上最小元素就是两个子数组分界线。...],此时最小数字一定在mid右边。...low = mid + 1 (2)array[mid] == array[high]: 出现这种情况array类似 [1,0,1,1,1] 或者[1,1,1,0,1],此时最小数字不好判断在mid左边...还是右边,这时只好一个一个试 , high = high - 1 (3)array[mid] < array[high]: 出现这种情况array类似[2,2,3,4,5,6,6],此时最小数字一定就是...high = mid 注意这里有个坑:如果待查询范围最后只剩两个数,那么mid 一定会指向下标靠前数字 比如 array = [4,6] array[low] = 4 ;array[mid] = 4

17520

算法-旋转数组最小数字

题目 输入一个递增排序数组一个旋转,输出旋转数组最小元素。例如数组{3,4,5,1,2}为数组{1,2,3,4,5}一个旋转,该数组最小值为1。...二分查找应用在旋转数组最小数字 讲道理的话,顺序数组发生了旋转已经就不满足二分查找算法前提条件了,但是好在问题是旋转数组最小数字,个人感觉这个理解很重要,本来二分查找满足前提条件的话适用于任意查找...,而该任务只是在旋转数组最小,所以只有改一改二分规则,还是可以用。...此时两个中间数是1,1<5&&1<2,数值1比p2指向数值(2)小,这说明中间数值(1)在第二个子序列,那么最小数值一定在该数值左面或者就是它,此时为了缩小查找范围,就可以移动p2到之间位置:...2.如果旋转数组第一个位置数字,最后一个位置数字,中间数字三者相等,该方法并不适用,此时只能顺序查找: ?

63850

数组重复数字

"""描述在一个长度为n数组所有数字都在0到n-1范围内。 数组某些数字是重复,但不知道有几个数字是重复。也不知道每个数字重复几次。请找出数组任意一个重复数字。...例如,如果输入长度为7数组[2,3,1,0,2,5,3],那么对应输出是2或者3。...存在不合法输入的话输出-1数据范围:0\le n \le 10000 \0≤n≤10000进阶:时间复杂度O(n)\O(n) ,空间复杂度O(n)\O(n)示例1输入:[2,3,1,0,2,5,3]复制返回值...:2复制说明:2或3都是对数据范围:0\le n \le 10000 \0≤n≤10000进阶:时间复杂度O(n)\O(n) ,空间复杂度O(n)\O(n)"""# @param numbers int...整型一维数组# @return int整型#from typing import Listclass Solution: def duplicate(self , numbers: List[int

1.4K10

查找数组重复数字

题目来源于《剑指Offer》面试题3:找出数组重复数字。   // 题目:在一个长度为n数组所有数字都在0到n-1范围内。...数组某些数字是重复,但不知道有几个数字重复了,   // 也不知道每个数字重复了几次。请找出数组任意一个重复数字。...: (输出) 数组一个重复数字 // 返回值: // true - 输入有效,并且数组存在重复数字 // false - 输入无效,或者数组没有重复数字...\n"); } // 重复数字数组最小数字 void test1() { int numbers[] = { 2, 1, 3, 1, 4 }; int duplications...numbers, sizeof(numbers) / sizeof(int), duplications, sizeof(duplications) / sizeof(int), true); } // 数组存在多个重复数字

3.9K60

LeetCode题解—旋转数组最小数字

前言 今天继续算法题:旋转数组最小数字 题目:旋转数组最小数字 把一个数组最开始若干个元素搬到数组末尾,我们称之为数组旋转。输入一个递增排序数组一个旋转,输出旋转数组最小元素。...例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 一个旋转,该数组最小值为1。...那么我们很容易想到第一解法就是遍历数组,然后找到某一个数字比它前面一个数字时候,那么这个数字就是我们要找最小数字。...因为正常来说都是后面数字大于前数字,所以出现小于前数字,那么就是这个旋转数组分界点,也就是最小数字了。...那么在我们旋转数组,能做到这一点吗? 比如我们取中间值a和最后值b,如果a大于b,就说明这个分界值在这a和b之间,a之前数据是正确排序

86320

剑指offer_11_旋转数组最小数字

描述:把一个数组最开始若干个元素搬到数组末尾,我们称之为数组旋转。...输入一个递增排序数组一个旋转,输出旋转数组最小元素,排序旋转数组定义如下: 如:{1,2,3,4,5}一个旋转数组为{3,4,5,1,2} 该数组最小值为1 初看题目我们最直观解法并不难...,遍历数组用俩个"指针"一前以后,当前面"指针"指向元素比后面的"指针"指向数组元素小时,这时我们就找到旋转数组最小元素,我们不难写出如下代码: public static int findMin...所对应值要比middle小,那么说明数组还在递增最小值会在middle和right之间,这时候我们让left等于middle,继续用同样方式缩小范围,如果middle要比right小,那么说明最小值在...right对应元素相等时,这是特殊情况,这里选择遍历去找最小值。

28620

寻找数组重复数字

规则如下: 给定一个长度为n数组数组每个元素取值范围为:0~n-1 数组某些数字是重复,但是不知道哪些数字重复了,也不知道重复了几次 求数组任意一个重复数字 实现思路 这个问题实现思路有三种...返回找到重复数字 时间复杂度分析:遍历数组,判断哈希表是否包含当前遍历到元素时,都可以用O(1)时间复杂度完成,所有元素遍历完就需要n个O(1),因此总时间复杂度为O(n) 空间复杂度分析:...动态排序法实现 根据题意可知,数组中元素取值范围在0~n-1,那么就可以得到如下结论: 如果数组没有重复元素,那么第i号元素值一定是当前下标(i) 如果数组中有重复元素,那么有些位置可能存在多个数字...= 5,则交换array[0]和array[5]位置,更新m值。交换位置后数组为:[3, 1, 2, 3, 4, 5, 3, 4, 8] 此时,m值为3,3!...时间复杂度分析:每个数字最多只要交换2次就能找到它位置,因此总时间复杂度为O(n) 空间复杂度分析:所有操作都在原数组进行,没有用到额外空间,所以空间复杂度为O(1) 使用动态排序法实现时,我们只是改变了数组元素顺序

1.3K10

剑指Offer——旋转数组最小数字

题目: 这道题有三种思路: 以第一个元素为最小值min,直接遍历一遍,每个元素都与min进行比较,当当前元素比最小值min小则更新min值,这里时间复杂度是O(n) 利用数组特性,我们可以知道只要...a[i+1] < a[i]那么就可以确定a[i+1]就是最小值,这里时间复杂度大概是O(1)~O(n)之间,取决于最小值在哪 还是利用数组特性:我们可以肯定,最左边元素一定比最右边元素大,这时候只需要取数组正中间元素来进行比较...,就可以确定中间元素处于较大元素组成区域(我们这里称之为左区)还是较小元素组成区域(右区),确定方法很简单,如果中间元素比左边大,那么可以确定在左区,就需要往右边搜索,如果比左边元素小,那么定然是在右区

23510
领券