- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 10
- 11
- 12
- 14
- 15
- 16
- 17
- 19
- 20
- 22
- 23
- 24
- 25
- 31
- 32
- 33
- 34
- 39
- 40
- 41
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 53
- 54
- 55
- 56
- 57
- 59
- 60
- 61
- 62
- 63
- 64
- 70
- 72
- 74
- 75
- 76
- 78
- 79
- 81
- 82
- 84
- 85
- 86
- 88
- 91
- 92
- 93
- 95
- 96
- 97
- 98
- 99
- 101
- 102
- 103
- 104
- 105
- 106
- 110
- 111
- 112
- 113
- 114
- 115
- 120
- 121
- 122
- 123
- 124
- 127
- 128
- 129
- 130
- 131
- 132
- 135
- 136
- 138
- 139
- 140
- 142
- 143
- 144
- 145
- 146
- 148
- 152
- 154
- 155
- 160
- 162
- 164
- 165
- 169
- 174
- 179
- 188
- 198
- 199
- 200
- 206
- 207
- 208
- 209
- 211
- 212
- 213
- 215
- 221
- 222
- 224
- 226
- 227
- 230
- 233
- 234
- 236 lowestCommonAncestor
- 239 maxSlidingWindow
使用双端队列,队列内容保存数组的下标,对应的元素满足单调递减的关系,队首对应当前窗口的最大值。每次添加元素只能从尾部添加, 有违反顺序的元素的时候,pop所有比当前元素小的元素。 我们需要的只是最大值,所以不会对结果影响。
- 240 searchMatrix # 使用二分查找不合适,用二叉树的思路。此题不够熟悉
将矩阵逆时针旋转45度,可以得到类似二叉树的结构。我们记矩阵中,右上角的元素为root。我们从根开始处理,根的下标为(i,j)=(0,n-1),其中左分支元素变小,对应下标j--,右分支元素变大,对应下表i++。当:
- root > target ,则 target 一定在 root 所在矩阵的列的左侧,执行--j。
- root < target ,则 target 一定在 root 所在矩阵的列的右方,即 root 所在列可被消去,执行++i。
- root==target,返回true。若最后无结果,返回false。
insights在于:简单的在各行或列二分搜索,会各自遗漏列和行的顺序,。我们可以进一步观察规律,横纵行不通,考虑逆时针旋转45度后,按照二叉树的方式处理。
- 242 isAnagram 简单的使用数组替代哈希,统计出现次数后再比较。
- 264
转移方程:dp[i]=min(dp[p_2]*2,dp[p_3]*3,dp[p_5]*5)。p2,p3,p5分别是丑数序列的下标,用于递推丑数序列。由于丑数需要满足递增,所以 更新序列时候,从p2,p3,p5指向的丑数中,分别乘以2,3,5,选取最小值作为更新, 并将对应的下标自增,移动到下一个下标。
- 275
- 279
- 287
- 295
- 297
- 300
- 309
- 312
- 313
- 315
- 316
- 321
- 322
- 327
- 328
- 329
- 336
- 337
- 343
- 347
- 349
- 354
- 357
- 363
- 377
- 381
- 382
- 384
- 394
- 398
- 402
- 403
- 406
- 407
- 410
- 416
- 438
- 440
- 443
- 445
- 450
- 452
- 454
- 458
- 463
- 468
- 470
- 473
- 474
- 480
- 486
- 494
- 498
- 504
- 509
- 514
- 516
- 518
- 523
- 538
- 543
- 560
- 567
- 583
- 647
- 654
- 662
- 673
- 677
- 678
- 679
- 692
- 695
- 698
- 704
- 714
- 718
- 739
- 752
- 761
- 845
- 862
- 871
- 879
- 887
- 895
- 912
- 922
- 941
- 958
- 973
- 1044
- 1095
- 1114
- 1122
- 1143
- 1160
- 1206
- 1207
- 1312
- 1339
- 1356
- 1365
- 1373
- 1379
- 1382
- 1420
- 1423
- 1449
- 1877
- 1996
- 2058
- 3156
- 3613
- 4387