注:子串sub-string(子数组 sub-array)是连续的,而子序列 subsequence 可以不连续。 数组的旋转:把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。
题目分类 | 题目编号 |
---|---|
数组的遍历 | 414, 485, 495, 628, 821 |
统计数组中的元素 | 41, 169, 274, 442, 448, 645, 697, 954, 2210 |
数组的改变, 移动 | 280, 283, 324, 453, 665, 760, 1243 |
数组的比较 | 1826, 2215 |
数组的旋转 | 189, 396 |
数组的翻转 | 969 |
特定顺序遍历二维数组 | 54, 59, 498 |
移除元素 | 26, 27, 283, 844, 977 |
二维数组变换 | 48, 73, 289, 566 |
二维数组及滚动数组 | 118, 119, 419, 598, 661 |
前缀和 preSum | 238, 303, 304, 643, 724, 1423, 2055 |
子数组 | 1708 |
差分数组 | 798, 1109, 2200 |
Top K 问题 | 215, 347, 378, 703, 剑指40 |
题目分类 | 题目编号 |
---|---|
字符 | 520 |
回文串 | 125, 266 |
公共前缀 | 14, 720, 1455, 2185 |
单词 | 58, 434, 819 |
字符串旋转 & 平移 | 796, 1427 |
字符串反转 | 151, 246, 344, 541, 557, 917, 1056 |
字符的统计 | 49, 242, 383, 387, 389, 423, 451, 467, 535, 551, 657, 696 |
数字与字符串间转换 | 8, 12, 13, 38, 165, 273, 299, 412, 443, 481, 506, 537, 539, 553, 592, 640 |
子串 | 1180, 1933 |
子序列 | 392, 524, 521, 522 |
高精度运算 | 43, 66, 67, 306, 415 |
字符串变换 | 6, 68, 394, 408, 482 |
字符串匹配 | 28, 214, 459, 686 |
中心拓展法 | 5, 647 |
题目分类 | 题目编号 |
---|---|
数字的位操作 (简单) | 9, 58, 168, 171, 190, 191, 231, 263, 326, 342, 405, 461, 476, 504, 693, 800, 1085 |
数字的位操作 (中等) | 7, 172, 233, 319, 357, 393, 400, 458, 477, 479, 564, 670, |
简单数学题 | 29, 492, 507 |
快速幂 | 50, 372 |
题目分类 | 题目编号 |
---|---|
哈希表的查找, 插入及删除 | 128, 138, 166, 202, 205, 217, 290, 349, 466, 500, 532, 633 |
哈希表与索引 | 1, 167, 219, 220, 599 |
哈希表与统计 | 18, 350, 454, 554, 594, 609, 1086, 1133 |
哈希表与前缀和 | 523, 525, 560 |
题目分类 | 题目编号 |
---|---|
用栈访问最后若干元素 | 71, 388, 682 |
栈与计算器 | 150, 224, 227 |
栈与括号匹配 | 20, 32, 591, 636 |
最大栈 | 716 |
题目分类 | 题目编号 |
---|---|
链表的删除 | 19, 82, 83, 203, 237, 1474 |
链表的遍历 | 430, 876, 2181 |
链表的旋转与反转 | 24, 25, 61, 92, 143, 206 |
链表高精度加法 | 2, 445 |
链表的合并 | 21, 23 |
找节点问题 | 142, 160 |
链表的其他变化 | 328 |
题目分类 | 题目编号 |
---|---|
树与递归 | 87, 100, 101, 222, 437, 508, 543, 563, 572, 617, 654, 687 |
树的层次/层序遍历 | 102, 103, 107, 112, 113, 116, 117, 129, 199, 257, 404, 429, 513, 515, 623, 637, 655, 662, 671, 690 |
树的前序遍历 | 144, 589 |
树的前序序列化 | 297, 331, 449, 606, 652 |
树的后序遍历 | 145, 590 |
树的中序遍历 & 二叉搜索树 | 94, 95, 98, 108, 109, 173, 230, 270, 450, 530, 538, 653, 669, 700, 1305, 剑指54 |
树的深度 | 104, 111, 559 |
平衡二叉树 | 110, 1382 |
重构二叉树 | 105, 106, 156, 226, 897 |
二叉树的展开 | 114 |
最近公共祖先 | 235, 236 |
Morris中序遍历 | 501, 99 |
四叉树 | 558, 427 |
题目分类 | 题目编号 |
---|---|
头尾指针 | 11, 15, 16, 18, 42, 167, 345, 680, 1099 |
滑动窗口 (简单) | 485, 643, 674, 1176, 1984 |
滑动窗口 (中等) | 3, 159, 187, 209, 424, 438, 487, 567, 611, 1004, 1052, 1151, 1208, 1423, 1695, 2024 |
滑动窗口 (困难) | 30, 76, 239, 632, 727, |
分段双指针 | 86, 88, 160, 163, 328, 475 |
快慢指针 | 26, 27, 80, 141, 142, 143, 234, 287, 457, 2182, 剑指22 |
多指针 | 1213 |
题目分类 | 题目编号 |
---|---|
数组中的动态规划 (简单) | 70, 338, 509, 746 |
数组中的动态规划 (中等) | 45, 55, 91, 198, 213, 264, 309, 313, 435, 487, 650, 714, 2100 |
数组中的动态规划 (困难) | 32, 123, 188, 403, 552, 639 |
子数组中的动态规划 | 53, 413, 689 |
子序列中的动态规划 | 300, 368, 446, 674, 727 |
背包问题: 0-1背包 | 416, 474, 494, 1049 |
背包问题: 完全背包 | 70, 279, 322, 377, 518 |
矩阵中的动态规划 | 62, 63, 64, 96, 120, 174, 221, 329, 576, 629, 688 |
动态规划与字符串匹配 | 10, 44, 72, 97, 115, 131, 132, 139, 140, 514, 516, 583 |
状态压缩动态规划 | 464, 473, 638, 691, 698, 1494 |
区间中的动态规划 | 312, 375, 486, 546, 664 |
树形dp | 124, 337 |
数位dp | 233, 357, 600 |
题目分类 | 题目编号 |
---|---|
数组贪心算法 (简单) | 121, 228, 409, 455, 561, 575, 605, 860, 1005, 2016 |
数组贪心算法 (中等) | 45, 55, 56, 57, 75, 122, 134, 179, 406, 435, 452, 621, 646, 649, 678, 714, 1414, 2038 |
数组贪心算法 (困难) | 32, 135, 420, 517 |
子数组与贪心算法 | 53, 134, 152, 581 |
子序列与贪心算法 | 334, 376, 659, 674 |
数字与贪心 | 343 |
单调栈 + 贪心 | 84, 85, 316, 321, 402, 456, 496, 503, 1081 |
题目分类 | 题目编号 |
---|---|
递归 | 341, 385, 394 |
记忆化递归 | 526, 576 |
题目分类 | 题目编号 |
---|---|
分割 | 93, 131 |
子集 | 78, 90, 2044 |
排列 | 46, 47, 526 |
组合 | 17, 39, 40, 77, 139, 216 |
题目分类 | 题目编号 |
---|---|
图的建立与应用 | 565 |
BFS 广度优先搜索 | 126, 127, 130, 133, 200, 310, 417, 433, 463, 529, 542, 675, 695, 2039 |
DFS 深度优先搜索 | 17, 365, 397, 399, 417, 2049 |
回溯法 | 31, 36, 37, 39, 40, 46, 47, 51, 52, 60, 77, 78, 79, 90, 93, 216, 332, 401, 491, 526, 556 |
回溯法与表达式 | 241, 282, 679 |
回溯法与括号 | 22, 301 |
回溯法与贪心 | 488 |
并查集 | 399, 547, 684, 685 |
拓扑排序 | 207, 210, 310, 1719 |
有限状态自动机 | 65, 468 |
Dijkstra算法 | 505, 743, 787, 1334, 1514, 1631 |
题目分类 | 题目编号 |
---|---|
二分查找应用(简单) | 35, 69, 278, 367, 374, 441, 704, 744, 1064, 1150 |
二分查找应用(中等) | 4, 34, 162, 275, 287, 300, 354, 436, 540, 611, 658, 1237, 1300 |
二分查找与旋转数组 | 33, 81, 153, 154, 852, 1095 |
二分查找与矩阵 | 74, 240 |
二分答案法 | 378, 410, 483, 668, 875, 1011, 1283, 1292, 1482, 1552 |
题目分类 | 题目编号 |
---|---|
(与 &) (或 | ) (非 ~) |
异或 ^ | 89, 136, 137, 260, 268, 2220, 剑指65 |
题目分类 | 题目编号 |
---|---|
数据结构设计——栈与队列 | 155, 225, 232, 284, 622, 641, 933, 面试题03.06 |
数据结构设计——哈希表 | 355, 380, 381, 676 |
数据结构设计——哈希与双向链表 | 146, 432, 460 |
前缀树 / 字典树 / Trie树 | 208, 211, 212, 336, 386, 421, 440, 472, 648, 600, 677, 1065 |
堆 & 优先队列 | 23, 215, 253, 295, 347, 373, 378, 407, 480, 502, 630, 632, 692, 703 |
树状数组 | 307, 315, 327, 493, 673 |
线段树 | 699 |
平衡树(set/map) | 218, 352, 363 |
题目分类 | 题目编号 |
---|---|
按权值采样 | 497, 528 |
水塘抽样 | 382, 398 |
拒绝采样 | 470, 478, 519 |
题目分类 | 题目编号 |
---|---|
计算几何基础 | 149, 223, 447, 593 |
分类讨论法 | 335 |
凸包 | 587 (Jarvis 算法、Graham 算法、 Andrew 算法) |
覆盖问题 | 391 |
题目分类 | 题目编号 |
---|---|
博弈论 | 292 |
分块 | 239, 164 |
倍增法 | 330 |
拓展欧几里得算法 | 365 |
洗牌算法 | 384 |
找规律 | 390, 672 |
分治法 | 395, 667 |
排序算法 | 147, 148, 1122 |
线性筛 | 204 |
摩尔投票法 | 169, 229 |