数组有关问题汇总

文档:知识点-5-数组.note(打开方式:有道云笔记,复制链接到浏览器)
链接:http://note.youdao.com/noteshare?id=a72b8b64a18ef13abb18f782a84c403f&sub=DA2F5EB3E8654349A0EA1474D8F07D41

目录


NC119:最小的K个数

解法1:优先级队列

解法2:冒泡排序的改进:冒K次

解法3:堆排序 / 快速排序 / 归并排序

NC118:数组中的逆序对

解法1:归并排序

解法2:暴力求解

NC73:数组中出现次数超过一半的数字

解法1:排序

解法2:哈希法

解法3:Boyer-Moore 摩尔投票算法

NC107:寻找峰值

思路:从后往前遍历比较

1.NC61:两数之和:

解法1:暴力求解:

解法2:哈希表

2.①NC22:合并两个有序数组:

解法:归并排序的思想

2.②NC37:合并区间

3.①NC38:螺旋矩阵

思路:printEdge打印矩阵的外层,层层打印

3.②NC18:顺时针旋转矩阵:

解法1:一层一层循环,坐标变换

解法2:做两次翻转,先沿右上-左下的对角线翻转,再沿水平中线上下翻转

解法3:找规律:mat[i][j]被旋转到了mat[j][n-i-1]的位置

4.NC54:数组中相加和为0的三元组

5.NC48:在转动过的有序数组中寻找目标值

解法1:二分搜索

解法2:排序+哈希:

解法3:暴力

6.①NC101:缺失数字

解法1:数组/哈希

解法2:排序

解法3:位运算

解法4:二分

6.②NC30:缺失的第一个正数

思路1:计数排序

思路2:返回得数最大不会超过数组长度加一,依次遍历

思路3:暴力求解

7.NC128:容器盛水问题

解法1:暴力

解法2:预处理数组

解法3:双指针法

8.三个数的最大乘积

解法1:排序

解法2:线性扫描

9.NC143:矩阵乘法

10.NC95:数组中的最长连续子序列

解法1:排序+统计

解法2:使用set集合

11.①NC110:旋转数组

解法:三次翻转

11.②NC77:调整数组顺序使奇数位于偶数前面

解法1:创建两个数组,一个用来存奇数,一个用来存偶数,最后合并

解法2:冒泡排序也可以保证相对位置不变

解法3:首尾双指针 / 快慢双指针

12.NC19:子数组的最大累加和问题

解法1:贪心

解法2:动态规划

13.NC125:未排序数组中累加和为给定值的最长子数组系列问题

解法:哈希

扩展问题1:

扩展问题2:

14.NC138:矩阵最长递增路径

15.NC131:随时找到数据流的中位数

解法:构造两个优先级队列:左边大根堆放较小的数,右边小根堆放较大的数

16.①NC7:买卖股票的最佳时机(一次交易):

思路:保存每个最小值点,更新维护该值后面较大值和最小值的差即可

16.②NC134:买卖股票的最佳时机(无限次交易):

思路:判断相邻是否递增

16.③NC135:买卖股票的最佳时机(2次交易):

解法1:buy表示买入时的收益,sell表示卖出时的收益

解法2:正反两次循环

解法3:暴力求解

17.NC93:设计LRU缓存结构

解法1:使用队列和map实现

猜你喜欢

转载自blog.csdn.net/lixiaohulife/article/details/112985759