在排序的数组中交换两个元素
来源:互联网 发布:乐视直播软件 编辑:程序博客网 时间:2024/05/19 11:50
如题,在一串已经排序好的数中,交换了两个元素。例如:
nums[] = {1,2,3,4,5,6,7,8,9,10}
交换两个元素(例如交换数字5
和9
)后:
nums[] = {1,2,3,4,9,6,7,8,5,10}
问题是怎么在数组中找到这两个元素?
思路
假设交换的两个元素为x
和y
,且x < y
。其他的数为Ni
。那么问题可以表示为:
nums[] = {N1 , N2 , N3 , Ni , x , Ni+2 , ... , y , ...,Nm }
交换x
和y
后
nums[] = {N1 , N2 , N3 , Ni , y , Ni+2 , ... , x , ...,Nm }
首先找到y
可以看到
y
一定比Ni+2
大,且一定先出现,所以我们可以定义一个cur
下标。如果nums[cur-1] > nums[cur]
则nums[cur-1]
就是我们要找的y。
然后找x
x
的条件也是nums[cur-1] > nums[cur]
,则nums[cur]
是x。这里注意一个问题就是:如果nums[cur-1] > nums[cur]
,则判断x的条件也是满足的。如果Ni+2
就是x
的话,这样做是对的。如果Ni+2
不是x
,后面一定会出现这样的条件,把x
替换掉。
代码
int nums[] = {.....};Integer first = null , second = null;for(int cur = 1 ; cur < nums.length ; cur++){ if(first == null && nums[cur-1] > nums[cur]){ first = nums[cur-1]; } //注意不能用else,否则x,y相邻的情况会无法匹配 if(first != null && nums[cur-1] > nums[cur]){ secon = nums[cur]; }}
0 0
- 在排序的数组中交换两个元素
- 两个数组中对应元素值的交换
- 交换数组中两个位置的元素值
- 交换排序:根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。
- 在两个排序数组中查找第k小元素
- 在排序数组中查找和为定值的两个元素
- Vector中两个元素值的交换
- Python中交换两个元素的方法
- 交换两个数组中的元素
- 交换两个数组元素以及求一个整数中二进制位的代码
- 关于Java中交换数组中的两个元素的一个错误笔记
- 交换一个数组前两个元素位置(@的用法)
- 第1题 在排序数组中查找和为某个指定数的两个元素之和
- 在升序排序的数组中插入一个元素
- 给定两个数组,交换它们的元素,使得两数组元素之和的差绝对值最小
- 交换两个数组的元素,使两个数组和的差最小
- 两个元素内容的交换
- 交换元素使两个数组相同
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)
- 在kali liunx上编译OsmocomBB
- 剑指offer_面试题3_二维数组中的查找(简单问题亦不能忽视)
- 2015年最新的解决办法“Connection to https://dl-ssl.google.com refused”
- opencv中获取和编辑图像像素值
- 在排序的数组中交换两个元素
- ubuntu 内核升级
- Struts2学习笔记二 国际化
- Python中的变量、引用和作用域
- Linux 下面编程提高代码执行效率的小技巧
- [leetcode-3]Longest Substring Without Repeating Characters(java)
- 设计模式--代理模式
- apache如何设置alias
- VMware8下桥接(bridged)设置