lintcode-39-恢复旋转排序数组
39-恢复旋转排序数组
给定一个旋转排序数组,在原地恢复其排序。
说明
什么是旋转数组?
比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3]样例
[4, 5, 1, 2, 3] -> [1, 2, 3, 4, 5]
挑战
使用O(1)的额外空间和O(n)时间复杂度
标签
数组 排序数组
思路——3步排序法
如[4, 5, 1, 2, 3] ,先找到旋转下标index, index=2
- 旋转前部,[4, 5, 1, 2, 3] =》 [5, 4, 1, 2, 3]
- 旋转后部,[4, 5, 1, 2, 3] =》 [5, 4, 3, 2, 1]
- 旋转全部,[4, 5, 1, 2, 3] =》 [1, 2, 3, 4, 5]
code
class Solution {
public:
void recoverRotatedSortedArray(vector<int> &nums) {
// write your code here
int i = 0, size = nums.size();
int index = 0;
for(i=0; i<size-1; i++) {
if(nums[i] > nums[i+1]) {
index = i+1;
break;
}
}
for(i=0; i<index/2; i++) {
int temp = nums[i];
nums[i] = nums[index-1-i];
nums[index-1-i] = temp;
}
for(i=0; i<(size-index)/2; i++) {
int temp = nums[index+i];
nums[index+i] = nums[size-1-i];
nums[size-1-i] = temp;
}
for(i=0; i<size/2; i++) {
int temp = nums[i];
nums[i] = nums[size-1-i];
nums[size-1-i] = temp;
}
}
};
lintcode-39-恢复旋转排序数组的更多相关文章
- [LintCode笔记了解一下]39.恢复旋转排序数组
思路: 1.需要O(n)的事件复杂度,所以多次循环不考虑 2.四步翻转法 -第一步,找到数组里最小的那个数字,因为是旋转排序数组,所以只要找到某个位置arr[i]>arr[i+1]的话,就找到了 ...
- lintcode:Recover Rotated Sorted Array恢复旋转排序数组
题目: 恢复旋转排序数组 给定一个旋转排序数组,在原地恢复其排序. 样例 [4, 5, 1, 2, 3] -> [1, 2, 3, 4, 5] 挑战 使用O(1)的额外空间和O(n)时间复杂度 ...
- lintcode39 恢复旋转排序数组
恢复旋转排序数组 给定一个旋转排序数组,在原地恢复其排序. 您在真实的面试中是否遇到过这个题? Yes 说明 什么是旋转数组? 比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3 ...
- lintcode :搜索旋转排序数组
题目 搜索旋转排序数组 假设有一个排序的按未知的旋转轴旋转的数组(比如,0 1 2 4 5 6 7 可能成为4 5 6 7 0 1 2).给定一个目标值进行搜索,如果在数组中找到目标值返回数组中的索引 ...
- 39. recover rotated sorted array恢复旋转排序数组
一句话思路:从左边开始的三步翻转法 一刷报错: 不理解start.end是位置随机定义的.i,j是临时变量,为start,end服务 nums.size()区别于nums.length:用于范形变量. ...
- lintcode: 寻找旋转排序数组中的最小值
寻找旋转排序数组中的最小值 假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2). 你需要找到其中最小的元素. 你可以假设数组中不存在重复的 ...
- lintcode:寻找旋转排序数组中的最小值 II
寻找旋转排序数组中的最小值 II 假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2). 你需要找到其中最小的元素. 数组中可能存在重复的元 ...
- lintcode 中等题:搜索旋转排序数组II
题目 搜索旋转排序数组 II 跟进“搜索旋转排序数组”,假如有重复元素又将如何? 是否会影响运行时间复杂度? 如何影响? 为何会影响? 写出一个函数判断给定的目标值是否出现在数组中. 样例 给出[3, ...
- 第81题:搜索旋转排序数组II
一. 问题描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] ). 编写一个函数来判断给定的目标值是 ...
随机推荐
- Elasticsearch 聚合操作
数据准备: PUT /shop { "settings": { "number_of_shards": 3, "number_of_replicas& ...
- php5.4以上 mysqli 实例操作mysql 增,删,改,查
<?php //php5.4以上 mysqli 实例操作mysql header("Content-type:text/html;charset=utf8"); $conn ...
- Python学习笔记:第3天 字符串的操作
目录 1. python的数据类型 2. int类型的操作 3. bool类型 4. 字符串的操作 5. for循环 1. python的数据类型 int 整数 str 字符串.一般不会用字符串保存大 ...
- English_phonetic symbol
Introduction 本人学习了奶爸课程---45天的搞定发音课,结合自己的英语水平,为自己撰写的一个系统的英语发音课,不只是音标,还有音标辨析.连读.音调等. 重点:英语发音时一个持续一生的东西 ...
- go内建容器-数组
1.基础定义 声明时数组长度在数组成员类型前 语法:var variableName [length]int //基本定义 var array1 [3]int //定义并赋值 var array2 = ...
- 156. Merge Intervals【LintCode by java】
Description Given a collection of intervals, merge all overlapping intervals. Example Given interval ...
- 20145234黄斐《Java程序设计》第五周学习总结
教材学习内容总结 第八章 异常处理 语法与继承架构 try.catch:try.catch代表错误的对象后做一些处理. 异常继承架构:错误会被包装为对象,这些对象均可抛出,因此设计错误对象都继承自ja ...
- (转) 如何从 0 开始学 ruby on rails (漫步版)
原文:http://readful.com/post/12322300571/0-ruby-on-rails ruby 是一门编程语言,ruby on rails 是 ruby 的一个 web 框架, ...
- iOS - Foundation相关
1.NSString A.创建的方式: stringWithFormat:格式化字符串 ,创建字符串对象在堆区域 @"jack& ...
- 微信小程序—day04
元素水平+垂直居中 昨天的用户页的用户头像,是根据已知的像素大小,设置固定的值,达到居中的效果. 今日切换机型进行适配,发现对不同尺寸大小的屏幕不匹配.所以对wxss进行修改,真正达到水平+垂直居中. ...