一、题意:一个数组中任意一个重复的数字 二、思路: 1.因为题中给的数字大小范围在0~n-1,因此可以直接用一个数据来记录数字是否重复出现过。时间复杂度为O(n),空间复杂度也为O(n); 2.先给数组排序,然后依次便利。时间复杂度为O(nlogn); 3.利用下标和对应数字的关系对数组进行重排,这 ...
分类:
编程语言 时间:
2019-02-02 23:38:07
阅读次数:
335
将矩阵(二维数组)旋转90° 如果只是要求旋转后输出,非常简单: 如果要求存回去,再开个数组倒腾一下就好。 但如果要求空间复杂度O(1),就得这样做了: 正方形、长方形矩阵 给定左上角、右下角坐标,作为基准,给全局数组赋值。 因为是正方形矩阵,对角线上,横纵坐标是一样的,给两个数就够了。 方法和正方 ...
分类:
其他好文 时间:
2019-02-01 16:23:51
阅读次数:
183
快速排序原理: 选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素或最后一个元素(还可以3个元素(第一个,中间,最后一个)取中)。 java代码:(随机选取一个基准值) 性能分析: 时间复杂度:O(n*logN) 空间复 ...
分类:
编程语言 时间:
2019-01-30 16:12:15
阅读次数:
183
归并排序原理: 利用分治的思想,通过递归来实现的, java代码: 性能分析: 时间复杂度:O(n*logN) 空间复杂度:O(n) 原地排序:否 稳定排序:是 ...
分类:
编程语言 时间:
2019-01-30 16:07:29
阅读次数:
209
简单选择排序原理: 性能分析: 时间复杂度:O(n^2) 空间复杂度:O(1) 原地排序:是 稳定排序:否 ...
分类:
编程语言 时间:
2019-01-30 13:07:21
阅读次数:
143
7. Reverse Integer 1)题目 2)思路 很简单,直接翻转加上临界溢出判断 3) 代码 4) 结果 时间复杂度:O(n) 空间复杂度:O(1) 耗时: 5) 调优 ...
分类:
其他好文 时间:
2019-01-28 01:24:29
阅读次数:
113
"传送门" 题意: 有一个1~n的排列,依次进行m次操作,第i次操作表示为$(x _i,y_i)$,交换以这两个值为下标的元素,每次操作有一半的概率成功,你需要求出最后序列的逆序对的期望个数. 分析: 因为逆序对是(x,y)的形式,那么考虑每一对(i,j)对答案的贡献. $f_{i,j}$表示$a_ ...
分类:
其他好文 时间:
2019-01-28 01:14:20
阅读次数:
269
5. Longest Palindromic Substring 1)题目 2)思路 遍历s, 判断每一位为中间位的最大回文子串。 比较即可。 3) 代码 4) 结果 时间复杂度:O(n^2) 空间复杂度:O(n) 耗时: 5) 调优 ...
分类:
其他好文 时间:
2019-01-28 00:56:12
阅读次数:
144
数据结构和算法 什么是数据结构和算法: ? 数据结构定义:我们如何把现实中的问题以特定的存储结构和存储类型保存起来 时间复杂度 :用来评估算法运行时间的一个式子(单位) 一般来说,时间 复杂度高的算法比复杂度低的算法慢。 常见的时间复杂度(按效率排序) 空间复杂度 :用来评估算法内存占用 大小 的一 ...
分类:
编程语言 时间:
2019-01-27 22:03:51
阅读次数:
202
题目说明 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 解法1 时间复杂度:O(n) 空间复杂度:O(1) 思路:利用数组为有序数组这一条件。使用双指针, ...
分类:
其他好文 时间:
2019-01-26 11:19:09
阅读次数:
181