我不复制题目了,太丑。转跳戳这里:--\(˙<>˙)/-- 这道题最简单的做法就是一个个比较,从第一个比到最后一个,但是很显然这样子太暴力了,leetcode哪里会出这种题目给我们。注意题目的字眼 “假设按照升序排序的数组在预先未知的某个点上进行了旋转”,这很明显就是想让我们用二分查找写这道题目,可 ...
分类:
编程语言 时间:
2020-01-25 00:57:30
阅读次数:
100
转跳点:--\(˙<>˙)/-- 原本打算大年三十十一起写完的,结果这篇拖到了年初一…… 这道题比刚刚那道,麻烦一点,因为有重复,所以我们需要考虑重复的情况,就是刚刚的两种情况变成了三种: mid < right:left = mid+1 mid > right:right = left; mid ...
分类:
编程语言 时间:
2020-01-25 00:54:05
阅读次数:
120
插入这词太具有欺骗性,并不是说在已经生成的数组中又插进来一个什么新的数,而是从数组元素中选出一个“标杆”元素(按索引遍历),让这个元素和之前的元素进行比较,直到找出一个元素大于这个“标杆”元素进行交换。 这样一来,我们大概可以构建出两层循环 外循环负责遍历数组,每次选出新的标杆元素, 内层while ...
分类:
编程语言 时间:
2020-01-23 15:28:19
阅读次数:
96
参考chaibubble的博客:https://blog.csdn.net/chaipp0607/article/details/76977687 思路分析: 排序数组:已经排好序的数组。(一开始不懂是什么意思..) 1. 可以遍历整个数组计算k值有多少个,这最容易想到,时间复杂度O(n)。 2. ...
分类:
编程语言 时间:
2020-01-21 21:32:51
阅读次数:
59
#include <stdio.h> #include <stdlib.h> #include <math.h> void printArray(int* array, int length) { for (int i = 0; i < length; i++) { printf("%d ", ar ...
分类:
其他好文 时间:
2020-01-21 12:08:18
阅读次数:
97
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是?O(log n) 级别。 如果数组中不存在目标值,返回?[ 1, 1]。 来源:力扣(LeetCode) 链接:https://leetcode cn.com ...
分类:
编程语言 时间:
2020-01-06 19:28:14
阅读次数:
84
4 class Solution { 5 public: 6 int InversePairs(vector<int> data) { 7 if(data.size()<=1) return 0;//如果少于等于1个元素,直接返回0 8 int* copy=new int[data.size()]; ...
分类:
编程语言 时间:
2020-01-01 20:35:16
阅读次数:
70
要求: (1)给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 (2)不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 官方示例: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原 ...
分类:
编程语言 时间:
2020-01-01 16:56:18
阅读次数:
86
描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须 ...
分类:
编程语言 时间:
2019-12-31 18:41:14
阅读次数:
55