/KKKotlinDemo

kotlin语法、算法、设计模式、协程等汇总demo

Primary LanguageJava

KKKotlinDemo

kotlin语法、算法、设计模式、协程等汇总demo


title: LeetCode百日计划-数组 copyright: false abbrlink: 26469 date: 2020-12-03 16:20:44 categories:


数组专栏目录

来源 题号 题目 语言 难易程度 时间复杂度 空间复杂度 星级 完成
LeetCode 1 两数之和 Kotlin 简单 O(n)
LeetCode 4 寻找两个正序数组的中位数 Kotlin 困难
LeetCode 11 盛最多水的容器 Kotlin 中等
LeetCode 15 三数之和 Kotlin 中等
LeetCode 16 最接近的三数之和 Kotlin 中等
LeetCode 18 四数之和 Kotlin 中等
LeetCode 26 删除排序数组中的重复项 Kotlin 简单
LeetCode 27 移除元素 Kotlin 简单
LeetCode 31 下一个排列 Kotlin
LeetCode 33 搜索旋转排序数组 Kotlin
LeetCode 34 在排序数组中查找元素的第一个和最后一个位置 Kotlin
LeetCode 35 搜索插入位置 Kotlin
LeetCode 39 组合总和 Kotlin 中等
LeetCode 40 组合总和 II Kotlin 中等
LeetCode 41 缺失的第一个正数 Kotlin 困难
LeetCode 42 接雨水 Kotlin 困难
LeetCode 45 跳跃游戏 II Kotlin
LeetCode 48 旋转图像 Kotlin
LeetCode 53 最大子序和 Kotlin
LeetCode 54 螺旋矩阵 Kotlin
LeetCode 55 跳跃游戏 Kotlin
LeetCode 56 合并区间 Kotlin
LeetCode 57 插入区间 Kotlin
LeetCode 59 螺旋矩阵 II Kotlin
LeetCode 62 不同路径 Kotlin
LeetCode 63 不同路径 II Kotlin
LeetCode 64 最小路径和 Kotlin
LeetCode 66 加一 Kotlin
LeetCode 73 矩阵置零 Kotlin
LeetCode 74 搜索二维矩阵 Kotlin
LeetCode 75 颜色分类 Kotlin
LeetCode 78 子集 Kotlin
LeetCode 79 单词搜索 Kotlin
LeetCode 80 删除排序数组中的重复项 Kotlin
LeetCode 81 搜索旋转排序数组 II Kotlin
LeetCode 84 柱状图中最大的矩形 Kotlin
LeetCode 85 最大矩形 Kotlin
LeetCode 88 合并两个有序数组 Kotlin
LeetCode 90 子集 II Kotlin
LeetCode 105 从前序与中序遍历序列构造二叉树 Kotlin
LeetCode 106 从中序与后序遍历序列构造二叉树 Kotlin
LeetCode 118 杨辉三角 Kotlin
LeetCode 119 杨辉三角 II Kotlin
LeetCode 120 三角形最小路径和 Kotlin
LeetCode 121 买卖股票的最佳时机 Kotlin
LeetCode 122 买卖股票的最佳时机 II Kotlin
LeetCode 123 买卖股票的最佳时机 III Kotlin
LeetCode 126 单词接龙 II Kotlin
LeetCode 128 最长连续序列 Kotlin
LeetCode 152 乘积最大子数组 Kotlin
LeetCode 153 寻找旋转排序数组中的最小值 Kotlin
LeetCode 154 寻找旋转排序数组中的最小值 II Kotlin
LeetCode 162 寻找峰值 Kotlin
LeetCode 163 缺失的区间 Kotlin
LeetCode 167 两数之和 II - 输入有序 Kotlin
LeetCode 169 多数元素 Kotlin
LeetCode 189 旋转数组 Kotlin
LeetCode 209 长度最小的子数组 Kotlin
LeetCode 216 组合总和 III Kotlin
LeetCode 217 存在重复元素 Kotlin
LeetCode 219 存在重复元素 II Kotlin
LeetCode 228 汇总区间 Kotlin
LeetCode 229 求众数 II Kotlin
LeetCode 238 除自身以外数组的乘积 Kotlin
LeetCode 243 最短单词距离 Kotlin
LeetCode 245 最短单词距离 III Kotlin
LeetCode 259 较小的三数之和 Kotlin
LeetCode 268 丢失的数字 Kotlin
LeetCode 277 搜寻名人 Kotlin
LeetCode 280 摆动排序 Kotlin
LeetCode 283 移动零 Kotlin
LeetCode 287 寻找重复数 Kotlin
LeetCode 289 生命游戏 Kotlin
LeetCode 370 区间加法 Kotlin
LeetCode 380 常数时间插入、删除和获 Kotlin
LeetCode 381 O(1) 时间插入、删除和 Kotlin
LeetCode 414 第三大的数 Kotlin
LeetCode 442 数组中重复的数据 Kotlin
LeetCode 448 找到所有数组中消失的数 Kotlin
LeetCode 457 环形数组循环 Kotlin
LeetCode 485 最大连续1的个数 Kotlin
LeetCode 495 提莫攻击 Kotlin
LeetCode 509 斐波那契数 Kotlin
LeetCode 531 孤独像素 I Kotlin
LeetCode 532 数组中的 k-diff 数对 Kotlin
LeetCode 533 孤独像素 II Kotlin
LeetCode 548 将数组分割成和相等的子 Kotlin
LeetCode 560 和为K的子数组 Kotlin
LeetCode 561 数组拆分 I Kotlin
LeetCode 562 矩阵中最长的连续1线段 Kotlin
LeetCode 565 数组嵌套 Kotlin
LeetCode 566 重塑矩阵 Kotlin
LeetCode 581 最短无序连续子数组 Kotlin
LeetCode 605 种花问题 Kotlin
LeetCode 611 有效三角形的个数 Kotlin
LeetCode 621 任务调度器 Kotlin
LeetCode 624 数组列表中的最大距离 Kotlin
LeetCode 628 三个数的最大乘积 Kotlin
LeetCode 643 子数组最大平均数 I Kotlin
LeetCode 644 最大平均子段和 II Kotlin
LeetCode 661 图片平滑器 Kotlin
LeetCode 665 非递减数列 Kotlin
LeetCode 667 优美的排列 II Kotlin
LeetCode 670 最大交换 Kotlin
LeetCode 674 最长连续递增序列 Kotlin
LeetCode 689 三个无重叠子数组的最大 Kotlin
LeetCode 695 岛屿的最大面积 Kotlin
LeetCode 697 数组的度 Kotlin
LeetCode 713 乘积小于K的子数组 Kotlin
LeetCode 714 买卖股票的最佳时机含手 Kotlin
LeetCode 717 1比特与2比特字符 Kotlin
LeetCode 718 最长重复子数组 Kotlin
LeetCode 719 找出第 k 小的距离对 Kotlin
LeetCode 723 粉碎糖果 Kotlin
LeetCode 724 寻找数组的中心索引 Kotlin
LeetCode 729 我的日程安排表 I Kotlin
LeetCode 746 使用最小花费爬楼梯 Kotlin
LeetCode 747 至少是其他数字两倍的最 Kotlin
LeetCode 755 倒水 Kotlin
LeetCode 766 托普利茨矩阵 Kotlin
LeetCode 768 最多能完成排序的块 II Kotlin
LeetCode 769 最多能完成排序的块 Kotlin
LeetCode 775 全局倒置与局部倒置 Kotlin
LeetCode 782 变为棋盘 Kotlin
LeetCode 792 匹配子序列的单词数 Kotlin
LeetCode 795 区间子数组个数 Kotlin
LeetCode 825 适龄的朋友 Kotlin
LeetCode 830 较大分组的位置 Kotlin
LeetCode 832 翻转图像 Kotlin
LeetCode 835 图像重叠 Kotlin
LeetCode 840 矩阵中的幻方 Kotlin
LeetCode 849 到最近的人的最大距离 Kotlin
LeetCode 867 转置矩阵 Kotlin
LeetCode 870 优势洗牌 Kotlin
LeetCode 873 最长的斐波那契子序列的 Kotlin
LeetCode 888 公平的糖果交换 Kotlin
LeetCode 891 子序列宽度之和 Kotlin
LeetCode 896 单调数列 Kotlin
LeetCode 900 RLE 迭代器 Kotlin
LeetCode 905 按奇偶排序数组 Kotlin
LeetCode 907 子数组的最小值之和 Kotlin
LeetCode 914 卡牌分组 Kotlin
LeetCode 915 分割数组 Kotlin
LeetCode 918 环形子数组的最大和 Kotlin
LeetCode 922 按奇偶排序数组 II Kotlin
LeetCode 926 将字符串翻转到单调递增 Kotlin
LeetCode 941 有效的山脉数组 Kotlin
LeetCode 945 使数组唯一的最小增量 Kotlin
LeetCode 950 按递增顺序显示卡牌 Kotlin
LeetCode 954 二倍数对数组 Kotlin
LeetCode 962 最大宽度坡 Kotlin
LeetCode 969 煎饼排序 Kotlin
LeetCode 974 和可被 K 整除的子数组 Kotlin
LeetCode 977 有序数组的平方 Kotlin
LeetCode 978 最长湍流子数组 Kotlin
LeetCode 985 查询后的偶数和 Kotlin
LeetCode 989 数组形式的整数加法 Kotlin
LeetCode 999 可以被一步捕获的棋子数 Kotlin
LeetCode 1002 查找常用字符 Kotlin
LeetCode 1007 行相等的最少多米诺旋 Kotlin
LeetCode 1010 总持续时间可被 60 整 Kotlin
LeetCode 1011 在 D 天内送达包裹的 Kotlin
LeetCode 1013 将数组分成和相等的三 Kotlin
LeetCode 1014 最佳观光组合 Kotlin
LeetCode 1018 可被 5 整除的二进制 Kotlin
LeetCode 1031 两个非重叠子数组的最 Kotlin
LeetCode 1035 不相交的线 Kotlin
LeetCode 1040 移动石子直到连续 II Kotlin
LeetCode 1051 高度检查器 Kotlin
LeetCode 1052 爱生气的书店老板 Kotlin
LeetCode 1053 交换一次的先前排列 Kotlin
LeetCode 1064 不动点 Kotlin
LeetCode 1074 元素和为目标值的子矩 Kotlin
LeetCode 1085 最小元素各数位之和 Kotlin
LeetCode 1086 前五科的均分 Kotlin
LeetCode 1089 复写零 Kotlin
LeetCode 1099 小于 K 的两数之和 Kotlin
LeetCode 1109 航班预订统计 Kotlin
LeetCode 1122 数组的相对排序 Kotlin
LeetCode 1128 等价多米诺骨牌对的数 Kotlin
LeetCode 1133 最大唯一数 Kotlin
LeetCode 1144 递减元素使数组呈锯齿 Kotlin
LeetCode 1146 快照数组 Kotlin
LeetCode 1150 检查一个数是否在数组 Kotlin
LeetCode 1151 最少交换次数来组合所 Kotlin
LeetCode 1152 用户网站访问行为分析 Kotlin
LeetCode 1157 子数组中占绝大多数的 Kotlin
LeetCode 1160 拼写单词 Kotlin
LeetCode 1169 查询无效交易 Kotlin
LeetCode 1170 比较字符串最小字母出 Kotlin
LeetCode 1176 健身计划评估 Kotlin
LeetCode 1177 构建回文串检测 Kotlin
LeetCode 1184 公交站间的距离 Kotlin
LeetCode 1185 一周中的第几天 Kotlin
LeetCode 1200 最小绝对差 Kotlin
LeetCode 1202 交换字符串中的元素 Kotlin
LeetCode 1208 尽可能使字符串相等 Kotlin
LeetCode 1217 玩筹码 Kotlin
LeetCode 1222 可以攻击国王的皇后 Kotlin
LeetCode 1232 缀点成线 Kotlin
LeetCode 1233 删除子文件夹 Kotlin
LeetCode 1243 数组变换 Kotlin
LeetCode 1252 奇数值单元格的数目 Kotlin
LeetCode 1260 二维网格迁移 Kotlin
LeetCode 1266 访问所有点的最小时间 Kotlin
LeetCode 1267 统计参与通信的服务器 Kotlin
LeetCode 1275 找出井字棋的获胜者 Kotlin
LeetCode 1277 统计全为 1 的正方形 Kotlin
LeetCode 1287 有序数组中出现次数超 Kotlin
LeetCode 1292 元素和小于等于阈值的 Kotlin
LeetCode 1295 统计位数为偶数的数字 Kotlin
LeetCode 1296 划分数组为连续数字的 Kotlin
LeetCode 1299 将每个元素替换为右侧 Kotlin
LeetCode 1300 转变数组后最接近目标 Kotlin
LeetCode 1304 和为零的N个唯一整数 Kotlin
LeetCode 1313 解压缩编码列表 Kotlin
LeetCode 1329 将矩阵按对角线排序 Kotlin
LeetCode 1330 翻转子数组得到最大的 Kotlin
LeetCode 1331 数组序号转换 Kotlin
LeetCode 1333 餐厅过滤器 Kotlin
LeetCode 1337 矩阵中战斗力最弱的 K Kotlin
LeetCode 1338 数组大小减半 Kotlin
LeetCode 1343 大小为 K 且平均值大 Kotlin
LeetCode 1346 检查整数及其两倍数是 Kotlin
LeetCode 1351 统计有序矩阵中的负数 Kotlin
LeetCode 1352 最后 K 个数的乘积 Kotlin
LeetCode 1365 有多少小于当前数字的 Kotlin
LeetCode 1366 通过投票对团队排名 Kotlin
LeetCode 1375 灯泡开关 III Kotlin
LeetCode 1380 矩阵中的幸运数 Kotlin
LeetCode 1385 两个数组间的距离值 Kotlin
LeetCode 1386 安排电影院座位 Kotlin
LeetCode 1389 按既定顺序创建目标数 Kotlin
LeetCode 1394 找出数组中的幸运数 Kotlin
LeetCode 1395 统计作战单位数 Kotlin
LeetCode 1399 统计最大组的数目 Kotlin
LeetCode 1409 查询带键的排列 Kotlin
LeetCode 1413 逐步求和得到正数的最 Kotlin
LeetCode 1414 和为 K 的最少斐波那 Kotlin
LeetCode 1423 可获得的最大点数 Kotlin
LeetCode 1424 对角线遍历 II Kotlin
LeetCode 1426 数元素 Kotlin
LeetCode 1427 字符串的左右移 Kotlin
LeetCode 1428 至少有一个 1 的最左 Kotlin
LeetCode 1431 拥有最多糖果的孩子 Kotlin
LeetCode 1437 是否所有 1 都至少相 Kotlin
LeetCode 1438 绝对差不超过限制的最 Kotlin
LeetCode 1442 形成两个异或相等数组 Kotlin
LeetCode 1450 在既定时间做作业的学 Kotlin
LeetCode 1460 通过翻转子数组使两个 Kotlin
LeetCode 1464 数组中两元素的最大乘 Kotlin
LeetCode 1465 切割后面积最大的蛋糕 Kotlin
LeetCode 1470 重新排列数组 Kotlin
LeetCode 1471 数组中的 k 个最强值 Kotlin
LeetCode 1475 商品折扣后的最终价格 Kotlin
LeetCode 1476 子矩形查询 Kotlin
LeetCode 1480 一维数组的动态和 Kotlin
LeetCode 1481 不同整数的最少数目 Kotlin
LeetCode 1482 制作 m 束花所需的最 Kotlin
LeetCode 1486 数组异或操作 Kotlin
LeetCode 1488 避免洪水泛滥 Kotlin
LeetCode 1491 去掉最低工资和最高工 Kotlin
LeetCode 1493 删掉一个元素以后全为 Kotlin
LeetCode 1497 检查数组对是否可以被 Kotlin
LeetCode 1499 满足不等式的最大值 Kotlin
LeetCode 1500 设计文件分享系统 Kotlin
LeetCode 1502 判断能否形成等差数列 Kotlin
LeetCode 1503 所有蚂蚁掉下来前的最 Kotlin
LeetCode 1508 子数组和排序后的区间 Kotlin
LeetCode 1509 三次操作后最大值与最 Kotlin
LeetCode 1512 好数对的数目 Kotlin
LeetCode 1524 和为奇数的子数组数目 Kotlin
LeetCode 1534 统计好三元组 Kotlin
LeetCode 1535 找出数组游戏的赢家 Kotlin
LeetCode 1539 第 k 个缺失的正整数 Kotlin
LeetCode 1550 存在连续三个奇数的数 Kotlin
LeetCode 1552 两球之间的磁力 Kotlin
LeetCode 1560 圆形赛道上经过次数最 Kotlin
LeetCode 1566 重复至少 K 次且长度 Kotlin
LeetCode 1570 两个稀疏向量的点积 Kotlin
LeetCode 1572 矩阵对角线元素的和 Kotlin
LeetCode 1574 删除最短的子数组使剩 Kotlin
LeetCode 1582 二进制矩阵中的特殊位 Kotlin
LeetCode 1583 统计不开心的朋友 Kotlin
LeetCode 1588 所有奇数长度子数组的 Kotlin
LeetCode 1590 使数组和能被 P 整除 Kotlin
LeetCode 1608 特殊数组的特征值 Kotlin
LeetCode 1619 删除某些元素后的数组 Kotlin
LeetCode 1629 按键持续时间最长的键 Kotlin
LeetCode 1636 按照频率将数组升序排 Kotlin
LeetCode 1640 能否连接形成数组 Kotlin
LeetCode 1646 获取生成数组中的最大 Kotlin
LeetCode 1652 拆炸弹 Kotlin
LeetCode 1656 设计有序流 Kotlin
LeetCode 1672 最富有客户的资产总量 Kotlin
剑指 Offer 3 数组中重复的数字 Kotlin
剑指 Offer 4 二维数组中的查找 Kotlin
剑指 Offer 29 顺时针打印矩阵 Kotlin
剑指 Offer 53 - I 在排序数组中查找数字 I Kotlin
剑指 Offer 53 - II 0~n-1中缺失的数字 Kotlin
面试题 1.01 判定字符是否唯一 Kotlin
面试题 1.02 判定是否互为字符重排 Kotlin
面试题 1.07 旋转矩阵 Kotlin
面试题 1.08 零矩阵 Kotlin
面试题 5.08 绘制直线 Kotlin
面试题 8.03 魔术索引 Kotlin
面试题 8.04 幂集 Kotlin
面试题 10.01 合并排序的数组 Kotlin
面试题 10.03 搜索旋转数组 Kotlin
面试题 16.04 井字游戏 Kotlin
面试题 16.06 最小差 Kotlin
面试题 16.1 生存人数 Kotlin
面试题 16.15 珠玑妙算 Kotlin
面试题 16.16 部分排序 Kotlin
面试题 16.17 连续数列 Kotlin
面试题 16.2 T9键盘 Kotlin
面试题 16.21 交换和 Kotlin
面试题 16.22 兰顿蚂蚁 Kotlin
面试题 16.24 数对和 Kotlin
面试题 17.04 消失的数字 Kotlin
面试题 17.05 字母与数字 Kotlin
面试题 17.1 主要元素 Kotlin
面试题 17.19 消失的两个数字 Kotlin
面试题 17.21 直方图的水量 Kotlin
面试题 17.22 单词转换 Kotlin

数组专题

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

题目大意

在数组中找到两个数字之后等于给定目标值,结果是返回两个找出数字在数组中的下标。

解题思路

这道题考察对映射关系的敏感程度,一般使用暴力算法可以很快解决,但是这里采取Map映射,value对应给定数组的下标,key对应下标的值,接下来通过遍历数组,如果map表里包含有目标值target-map表中另一值,则返回对应结果;否则存储下标及下标对应值。

代码

class Solution {
    fun twoSum(nums: IntArray, target: Int): IntArray {
        val hashMap = hashMapOf<Int, Int>()
        for (i in nums.indices) {
            if (hashMap.containsKey(target - nums[i])) {
                return intArrayOf(hashMap[target - nums[i]]!!, i)
            }
            hashMap[nums[i]] = i
        }
        return intArrayOf(0)
    }
}

给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。

示例 1:

  输入: nums1 = [1,3], nums2 = [2]

  输出: 2.00000

  解释: 合并数组 = [1,2,3] ,中位数 2

示例 2:

  输入: nums1 = [1,2], nums2 = [3,4]

  输出: 2.50000

  解释: 合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

示例 3:

  输入: nums1 = [0,0], nums2 = [0,0]

  输出: 0.00000

题目大意

给定两个大小为m、n的有序数组 $N_1$$N_2$ 找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log())

解题思路

  • 首先要求时间复杂度为 O(log (m+n)),就无法通过合并两个数组再取出中位数。看到log复杂度,尝试二分查找法解决。

  • 虽然不能真的合并,但是我们可以假设两个数组合成一个(左边$N_1$和右边$N_2$ => 保证$N_1$最右边的值是在$N_2$哪一个位置,$N_2$最左边的值是在$N_1$哪一个位置?才是解决问题的关键),这里举例说明理解更好。

  • 假设两个有序数组如下:

   $N_1$: 1 3 4 9    length1 = 4

   $N_2$: 1 2 3 4 5 6 7 8 9    length2 = 9

 两个有序数组的长度之和为13。那么中位数是两个有序数组中的第7个元素,因此只要找到第k=7个元素。

代码

给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

说明:你不能倾斜容器。

示例:

question_11.jpg

  输入: [1,8,6,2,5,4,8,3,7]

  输出: 49

  解释: 图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

题目大意

给出一个非负整数数组,$a_1$、$a_2$、$a_3$ ... $a_n$,每个整数代表一个垂直在坐标轴 x 位置的高度为 $a_y$ 的墙,选择两堵墙(两堵墙取最矮),和x轴构成方形区域,在这些可行性区域内容器最多能容纳的水量

解题思路

首先这题需要了解指针对撞:对一个排好序的数组,存在两个指针,分别指向最左端和最右端,我们可以通过与目标值的对比,动态的移动左指针和右指针,逐渐接近目标值。这样通过首尾两个指针,每次移动以后都分别判断长宽的乘积是否是最大。

代码

    class Solution {
        fun maxArea(height: IntArray): Int {
            var max = 0
            var start = 0 // 左边界
            var end = height.size - 1 // 右边界

            while (start < end) {
                var width = end - start
                // 初始化高度为左边界对应高度值
                var high = height[start]
                if (height[start] < height[end]){
                    high = height[start]
                    start++
                }else{
                    high = height[end]
                    end --
                }

                val temp = width * high
                if (temp > max){
                    max = temp
                }
            }
            return max
        }
    }

15 三数之和
16 最接近的三数之和
18 四数之和
26 删除排序数组中的重复项
27 移除元素
31 下一个排列
33 搜索旋转排序数组
34 在排序数组中查找元素的第一个和最后一个位置
35 搜索插入位置
39 组合总和
40 组合总和 II
41 缺失的第一个正数
42 接雨水
45 跳跃游戏 II
48 旋转图像
53 最大子序和
54 螺旋矩阵
55 跳跃游戏
56 合并区间
57 插入区间
59 螺旋矩阵 II
62 不同路径
63 不同路径 II
64 最小路径和
66 加一
73 矩阵置零
74 搜索二维矩阵
75 颜色分类
78 子集
79 单词搜索
80 删除排序数组中的重复项 II
81 搜索旋转排序数组 II
84 柱状图中最大的矩形
85 最大矩形
88 合并两个有序数组
90 子集 II
105 从前序与中序遍历序列构造二叉树
106 从中序与后序遍历序列构造二叉树
118 杨辉三角
119 杨辉三角 II
120 三角形最小路径和
121 买卖股票的最佳时机
122 买卖股票的最佳时机 II
123 买卖股票的最佳时机 III
126 单词接龙 II
128 最长连续序列
152 乘积最大子数组
153 寻找旋转排序数组中的最小值
154 寻找旋转排序数组中的最小值 II
162 寻找峰值
163 缺失的区间
167 两数之和 II - 输入有序数组
169 多数元素
189 旋转数组
209 长度最小的子数组
216 组合总和 III
217 存在重复元素
219 存在重复元素 II
228 汇总区间
229 求众数 II
238 除自身以外数组的乘积
243 最短单词距离
245 最短单词距离 III
259 较小的三数之和
268 丢失的数字
277 搜寻名人
280 摆动排序
283 移动零
287 寻找重复数
289 生命游戏
370 区间加法
380 常数时间插入、删除和获取随机元素
381 O(1) 时间插入、删除和获取随机元素 - 允许重复
414 第三大的数
442 数组中重复的数据
448 找到所有数组中消失的数字
457 环形数组循环
485 最大连续1的个数
495 提莫攻击
509 斐波那契数
531 孤独像素 I
532 数组中的 k-diff 数对
533 孤独像素 II
548 将数组分割成和相等的子数组
560 和为K的子数组
561 数组拆分 I
562 矩阵中最长的连续1线段
565 数组嵌套
566 重塑矩阵
581 最短无序连续子数组
605 种花问题
611 有效三角形的个数
621 任务调度器
624 数组列表中的最大距离
628 三个数的最大乘积
643 子数组最大平均数 I 644 最大平均子段和 II
661 图片平滑器
665 非递减数列
667 优美的排列 II
670 最大交换
674 最长连续递增序列
689 三个无重叠子数组的最大和
695 岛屿的最大面积
697 数组的度
713 乘积小于K的子数组
714 买卖股票的最佳时机含手续费
717 1比特与2比特字符
718 最长重复子数组
719 找出第 k 小的距离对
723 粉碎糖果
724 寻找数组的中心索引
729 我的日程安排表 I
746 使用最小花费爬楼梯
747 至少是其他数字两倍的最大数
755 倒水
766 托普利茨矩阵
768 最多能完成排序的块 II
769 最多能完成排序的块
775 全局倒置与局部倒置
782 变为棋盘
792 匹配子序列的单词数
795 区间子数组个数
825 适龄的朋友
830 较大分组的位置
832 翻转图像
835 图像重叠
840 矩阵中的幻方
849 到最近的人的最大距离
867 转置矩阵
870 优势洗牌
873 最长的斐波那契子序列的长度
888 公平的糖果交换
891 子序列宽度之和
896 单调数列
900 RLE 迭代器
905 按奇偶排序数组
907 子数组的最小值之和
914 卡牌分组
915 分割数组
918 环形子数组的最大和
922 按奇偶排序数组 II
926 将字符串翻转到单调递增
941 有效的山脉数组
945 使数组唯一的最小增量
950 按递增顺序显示卡牌
954 二倍数对数组
962 最大宽度坡
969 煎饼排序
974 和可被 K 整除的子数组
977 有序数组的平方
978 最长湍流子数组
985 查询后的偶数和
989 数组形式的整数加法
999 可以被一步捕获的棋子数
1002 查找常用字符
1007 行相等的最少多米诺旋转
1010 总持续时间可被 60 整除的歌曲
1011 在 D 天内送达包裹的能力
1013 将数组分成和相等的三个部分
1014 最佳观光组合
1018 可被 5 整除的二进制前缀
1031 两个非重叠子数组的最大和
1035 不相交的线
1040 移动石子直到连续 II
1051 高度检查器
1052 爱生气的书店老板
1053 交换一次的先前排列
1064 不动点
1074 元素和为目标值的子矩阵数量
1085 最小元素各数位之和
1086 前五科的均分
1089 复写零
1099 小于 K 的两数之和
1109 航班预订统计
1122 数组的相对排序
1128 等价多米诺骨牌对的数量
1133 最大唯一数
1144 递减元素使数组呈锯齿状
1146 快照数组
1150 检查一个数是否在数组中占绝大多数
1151 最少交换次数来组合所有的 1
1152 用户网站访问行为分析
1157 子数组中占绝大多数的元素
1160 拼写单词
1169 查询无效交易
1170 比较字符串最小字母出现频次
1176 健身计划评估
1177 构建回文串检测
1184 公交站间的距离
1185 一周中的第几天
1200 最小绝对差
1202 交换字符串中的元素
1208 尽可能使字符串相等
1217 玩筹码
1222 可以攻击国王的皇后 1232 缀点成线
1233 删除子文件夹
1243 数组变换
1252 奇数值单元格的数目
1260 二维网格迁移
1266 访问所有点的最小时间
1267 统计参与通信的服务器
1275 找出井字棋的获胜者
1277 统计全为 1 的正方形子矩阵
1287 有序数组中出现次数超过25%的元素
1292 元素和小于等于阈值的正方形的最大边长
1295 统计位数为偶数的数字
1296 划分数组为连续数字的集合
1299 将每个元素替换为右侧最大元素
1300 转变数组后最接近目标值的数组和
1304 和为零的N个唯一整数
1313 解压缩编码列表
1329 将矩阵按对角线排序
1330 翻转子数组得到最大的数组值
1331 数组序号转换
1333 餐厅过滤器
1337 矩阵中战斗力最弱的 K 行
1338 数组大小减半
1343 大小为 K 且平均值大于等于阈值的子数组数目
1346 检查整数及其两倍数是否存在
1351 统计有序矩阵中的负数
1352 最后 K 个数的乘积
1365 有多少小于当前数字的数字
1366 通过投票对团队排名
1375 灯泡开关 III
1380 矩阵中的幸运数
1385 两个数组间的距离值
1386 安排电影院座位
1389 按既定顺序创建目标数组
1394 找出数组中的幸运数
1395 统计作战单位数
1399 统计最大组的数目
1409 查询带键的排列
1413 逐步求和得到正数的最小值
1414 和为 K 的最少斐波那契数字数目
1423 可获得的最大点数
1424 对角线遍历 II
1426 数元素
1427 字符串的左右移
1428 至少有一个 1 的最左端列
1431 拥有最多糖果的孩子
1437 是否所有 1 都至少相隔 k 个元素
1438 绝对差不超过限制的最长连续子数组
1442 形成两个异或相等数组的三元组数目
1450 在既定时间做作业的学生人数
1460 通过翻转子数组使两个数组相等
1464 数组中两元素的最大乘积
1465 切割后面积最大的蛋糕
1470 重新排列数组
1471 数组中的 k 个最强值
1475 商品折扣后的最终价格
1476 子矩形查询
1480 一维数组的动态和
1481 不同整数的最少数目
1482 制作 m 束花所需的最少天数
1486 数组异或操作
1488 避免洪水泛滥
1491 去掉最低工资和最高工资后的工资平均值
1493 删掉一个元素以后全为 1 的最长子数组
1497 检查数组对是否可以被 k 整除
1499 满足不等式的最大值
1500 设计文件分享系统
1502 判断能否形成等差数列
1503 所有蚂蚁掉下来前的最后一刻
1508 子数组和排序后的区间和
1509 三次操作后最大值与最小值的最小差
1512 好数对的数目
1524 和为奇数的子数组数目
1534 统计好三元组
1535 找出数组游戏的赢家
1539 第 k 个缺失的正整数
1550 存在连续三个奇数的数组
1552 两球之间的磁力
1560 圆形赛道上经过次数最多的扇区
1566 重复至少 K 次且长度为 M 的模式
1570 两个稀疏向量的点积
1572 矩阵对角线元素的和
1574 删除最短的子数组使剩余数组有序
1582 二进制矩阵中的特殊位置
1583 统计不开心的朋友
1588 所有奇数长度子数组的和
1590 使数组和能被 P 整除
1608 特殊数组的特征值
1619 删除某些元素后的数组均值
1629 按键持续时间最长的键
1636 按照频率将数组升序排序
1640 能否连接形成数组
1646 获取生成数组中的最大值
1652 拆炸弹
1656 设计有序流
1672 最富有客户的资产总量
剑指 Offer 03 数组中重复的数字
剑指 Offer 04 二维数组中的查找
剑指 Offer 29 顺时针打印矩阵
剑指 Offer 53 - I 在排序数组中查找数字 I 剑指 Offer 53 - II 0~n-1中缺失的数字
面试题 01.01 判定字符是否唯一
面试题 01.02 判定是否互为字符重排
面试题 01.07 旋转矩阵
面试题 01.08 零矩阵
面试题 05.08 绘制直线
面试题 08.03 魔术索引
面试题 08.04 幂集
面试题 10.01 合并排序的数组
面试题 10.03 搜索旋转数组
面试题 16.04 井字游戏
面试题 16.06 最小差
面试题 16.10 生存人数
面试题 16.15 珠玑妙算
面试题 16.16 部分排序
面试题 16.17 连续数列
面试题 16.20 T9键盘
面试题 16.21 交换和
面试题 16.22 兰顿蚂蚁
面试题 16.24 数对和
面试题 17.04 消失的数字
面试题 17.05 字母与数字
面试题 17.10 主要元素
面试题 17.19 消失的两个数字
面试题 17.21 直方图的水量
面试题 17.22 单词转换