From 1241441ffb60b3d54ae4b6660aca6764104d3302 Mon Sep 17 00:00:00 2001 From: fleyx Date: Sun, 7 Apr 2024 09:28:21 +0800 Subject: [PATCH] add --- 5.leetcode/src/com/fanxb/common/ListNode.java | 4 +- 5.leetcode/src/com/fanxb/common/Q215.java | 44 ------- 5.leetcode/src/com/fanxb/common/Q918.java | 15 +++ 5.leetcode/src/com/fanxb/common/TreeNode.java | 6 +- .../src/com/fanxb/common/p100/ListNode.java | 18 +++ .../src/com/fanxb/common/{ => p100}/Q1.java | 110 +++++++++--------- .../src/com/fanxb/common/{ => p100}/Q11.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q12.java | 5 +- .../src/com/fanxb/common/{ => p100}/Q13.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q14.java | 4 +- .../src/com/fanxb/common/{ => p100}/Q15.java | 3 +- .../src/com/fanxb/common/{ => p100}/Q19.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q2.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q21.java | 8 +- .../src/com/fanxb/common/{ => p100}/Q22.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q23.java | 36 +++++- .../src/com/fanxb/common/{ => p100}/Q25.java | 44 +++---- .../src/com/fanxb/common/{ => p100}/Q26.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q27.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q28.java | 4 +- .../src/com/fanxb/common/{ => p100}/Q3.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q33.java | 31 ++++- .../src/com/fanxb/common/{ => p100}/Q34.java | 19 ++- 5.leetcode/src/com/fanxb/common/p100/Q35.java | 14 +++ .../src/com/fanxb/common/{ => p100}/Q36.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q39.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q4.java | 28 ++++- .../src/com/fanxb/common/{ => p100}/Q40.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q42.java | 4 +- .../src/com/fanxb/common/{ => p100}/Q45.java | 4 +- .../src/com/fanxb/common/{ => p100}/Q46.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q47.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q48.java | 5 +- .../src/com/fanxb/common/{ => p100}/Q49.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q5.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q52.java | 2 +- 5.leetcode/src/com/fanxb/common/p100/Q53.java | 20 ++++ .../src/com/fanxb/common/{ => p100}/Q54.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q55.java | 7 +- .../src/com/fanxb/common/{ => p100}/Q56.java | 4 +- .../src/com/fanxb/common/{ => p100}/Q57.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q58.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q6.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q61.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q62.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q63.java | 4 +- .../src/com/fanxb/common/{ => p100}/Q64.java | 2 +- 5.leetcode/src/com/fanxb/common/p100/Q67.java | 18 +++ .../src/com/fanxb/common/{ => p100}/Q68.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q69.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q7.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q70.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q71.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q72.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q73.java | 4 +- .../src/com/fanxb/common/{ => p100}/Q74.java | 17 ++- .../src/com/fanxb/common/{ => p100}/Q76.java | 5 +- .../src/com/fanxb/common/{ => p100}/Q77.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q78.java | 3 +- .../src/com/fanxb/common/{ => p100}/Q79.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q80.java | 6 +- .../src/com/fanxb/common/{ => p100}/Q81.java | 4 +- .../src/com/fanxb/common/{ => p100}/Q82.java | 12 +- .../src/com/fanxb/common/{ => p100}/Q83.java | 4 +- .../src/com/fanxb/common/{ => p100}/Q84.java | 4 +- .../src/com/fanxb/common/{ => p100}/Q86.java | 10 +- .../src/com/fanxb/common/{ => p100}/Q88.java | 3 +- .../src/com/fanxb/common/{ => p100}/Q9.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q90.java | 2 +- .../src/com/fanxb/common/{ => p100}/Q92.java | 7 +- .../src/com/fanxb/common/{ => p100}/Q94.java | 10 +- .../src/com/fanxb/common/{ => p100}/Q98.java | 6 +- .../src/com/fanxb/common/{ => p200}/Q100.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q101.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q102.java | 4 +- .../src/com/fanxb/common/{ => p200}/Q103.java | 4 +- .../src/com/fanxb/common/{ => p200}/Q104.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q105.java | 4 +- .../src/com/fanxb/common/{ => p200}/Q106.java | 4 +- .../src/com/fanxb/common/p200/Q108.java | 21 ++++ .../src/com/fanxb/common/{ => p200}/Q112.java | 4 +- .../src/com/fanxb/common/{ => p200}/Q114.java | 4 +- .../src/com/fanxb/common/{ => p200}/Q117.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q120.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q121.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q122.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q123.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q124.java | 4 +- .../src/com/fanxb/common/{ => p200}/Q125.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q127.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q128.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q129.java | 4 +- .../src/com/fanxb/common/{ => p200}/Q130.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q131.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q132.java | 6 +- .../src/com/fanxb/common/{ => p200}/Q133.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q134.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q135.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q138.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q141.java | 4 +- .../src/com/fanxb/common/{ => p200}/Q142.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q144.java | 4 +- .../src/com/fanxb/common/{ => p200}/Q145.java | 4 +- .../src/com/fanxb/common/{ => p200}/Q146.java | 2 +- .../com/fanxb/common/{ => p200}/Q146_1.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q148.java | 39 ++++++- .../src/com/fanxb/common/{ => p200}/Q149.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q150.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q151.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q153.java | 24 +++- .../src/com/fanxb/common/{ => p200}/Q154.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q155.java | 2 +- .../src/com/fanxb/common/p200/Q162.java | 18 +++ .../src/com/fanxb/common/{ => p200}/Q167.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q169.java | 4 +- .../src/com/fanxb/common/{ => p200}/Q173.java | 4 +- .../src/com/fanxb/common/{ => p200}/Q189.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q190.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q198.java | 2 +- .../src/com/fanxb/common/{ => p200}/Q199.java | 4 +- .../src/com/fanxb/common/{ => p300}/Q200.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q202.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q205.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q207.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q208.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q209.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q210.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q211.java | 5 +- .../src/com/fanxb/common/{ => p300}/Q212.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q213.java | 2 +- .../src/com/fanxb/common/p300/Q215.java | 89 ++++++++++++++ .../src/com/fanxb/common/{ => p300}/Q216.java | 3 +- .../src/com/fanxb/common/{ => p300}/Q219.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q222.java | 4 +- .../src/com/fanxb/common/{ => p300}/Q224.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q225.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q226.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q228.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q230.java | 4 +- .../src/com/fanxb/common/{ => p300}/Q232.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q236.java | 4 +- .../src/com/fanxb/common/{ => p300}/Q238.java | 3 +- .../src/com/fanxb/common/{ => p300}/Q239.java | 3 +- .../src/com/fanxb/common/{ => p300}/Q240.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q242.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q264.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q274.java | 3 +- .../src/com/fanxb/common/{ => p300}/Q278.java | 2 +- .../src/com/fanxb/common/{ => p300}/Q290.java | 2 +- .../src/com/fanxb/common/p300/Q295.java | 40 +++++++ .../src/com/fanxb/common/{ => p400}/Q300.java | 4 +- .../src/com/fanxb/common/{ => p400}/Q326.java | 2 +- .../src/com/fanxb/common/{ => p400}/Q337.java | 4 +- .../src/com/fanxb/common/{ => p400}/Q347.java | 2 +- .../src/com/fanxb/common/{ => p400}/Q367.java | 2 +- .../src/com/fanxb/common/p400/Q373.java | 26 +++++ .../src/com/fanxb/common/{ => p400}/Q374.java | 2 +- .../src/com/fanxb/common/{ => p400}/Q380.java | 2 +- .../src/com/fanxb/common/{ => p400}/Q383.java | 2 +- .../src/com/fanxb/common/{ => p400}/Q392.java | 2 +- .../src/com/fanxb/common/{ => p500}/Q401.java | 2 +- .../src/com/fanxb/common/{ => p500}/Q406.java | 2 +- .../src/com/fanxb/common/{ => p500}/Q412.java | 2 +- .../src/com/fanxb/common/p500/Q427.java | 71 +++++++++++ .../src/com/fanxb/common/{ => p500}/Q433.java | 2 +- .../src/com/fanxb/common/{ => p500}/Q435.java | 2 +- .../src/com/fanxb/common/{ => p500}/Q452.java | 2 +- .../src/com/fanxb/common/{ => p500}/Q455.java | 2 +- .../src/com/fanxb/common/p600/Q502.java | 24 ++++ .../src/com/fanxb/common/{ => p600}/Q507.java | 2 +- .../src/com/fanxb/common/{ => p600}/Q524.java | 2 +- .../src/com/fanxb/common/{ => p600}/Q530.java | 4 +- .../src/com/fanxb/common/{ => p600}/Q539.java | 2 +- .../src/com/fanxb/common/{ => p600}/Q540.java | 2 +- .../src/com/fanxb/common/{ => p700}/Q605.java | 2 +- .../src/com/fanxb/common/{ => p700}/Q633.java | 2 +- .../src/com/fanxb/common/{ => p700}/Q637.java | 4 +- .../src/com/fanxb/common/{ => p700}/Q665.java | 2 +- .../src/com/fanxb/common/{ => p700}/Q680.java | 4 +- 179 files changed, 855 insertions(+), 368 deletions(-) delete mode 100644 5.leetcode/src/com/fanxb/common/Q215.java create mode 100644 5.leetcode/src/com/fanxb/common/Q918.java create mode 100644 5.leetcode/src/com/fanxb/common/p100/ListNode.java rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q1.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q11.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q12.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q13.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q14.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q15.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q19.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q2.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q21.java (75%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q22.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q23.java (77%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q25.java (63%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q26.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q27.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q28.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q3.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q33.java (58%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q34.java (75%) create mode 100644 5.leetcode/src/com/fanxb/common/p100/Q35.java rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q36.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q39.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q4.java (55%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q40.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q42.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q45.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q46.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q47.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q48.java (90%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q49.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q5.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q52.java (97%) create mode 100644 5.leetcode/src/com/fanxb/common/p100/Q53.java rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q54.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q55.java (83%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q56.java (90%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q57.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q58.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q6.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q61.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q62.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q63.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q64.java (91%) create mode 100644 5.leetcode/src/com/fanxb/common/p100/Q67.java rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q68.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q69.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q7.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q70.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q71.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q72.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q73.java (92%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q74.java (68%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q76.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q77.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q78.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q79.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q80.java (92%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q81.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q82.java (73%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q83.java (93%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q84.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q86.java (59%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q88.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q9.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q90.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q92.java (91%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q94.java (66%) rename 5.leetcode/src/com/fanxb/common/{ => p100}/Q98.java (75%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q100.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q101.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q102.java (92%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q103.java (92%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q104.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q105.java (92%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q106.java (92%) create mode 100644 5.leetcode/src/com/fanxb/common/p200/Q108.java rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q112.java (92%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q114.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q117.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q120.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q121.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q122.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q123.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q124.java (90%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q125.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q127.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q128.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q129.java (90%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q130.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q131.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q132.java (93%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q133.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q134.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q135.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q138.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q141.java (90%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q142.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q144.java (89%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q145.java (91%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q146.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q146_1.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q148.java (56%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q149.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q150.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q151.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q153.java (67%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q154.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q155.java (94%) create mode 100644 5.leetcode/src/com/fanxb/common/p200/Q162.java rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q167.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q169.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q173.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q189.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q190.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q198.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p200}/Q199.java (93%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q200.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q202.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q205.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q207.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q208.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q209.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q210.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q211.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q212.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q213.java (97%) create mode 100644 5.leetcode/src/com/fanxb/common/p300/Q215.java rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q216.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q219.java (93%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q222.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q224.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q225.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q226.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q228.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q230.java (85%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q232.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q236.java (92%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q238.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q239.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q240.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q242.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q264.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q274.java (90%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q278.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p300}/Q290.java (96%) create mode 100644 5.leetcode/src/com/fanxb/common/p300/Q295.java rename 5.leetcode/src/com/fanxb/common/{ => p400}/Q300.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p400}/Q326.java (84%) rename 5.leetcode/src/com/fanxb/common/{ => p400}/Q337.java (95%) rename 5.leetcode/src/com/fanxb/common/{ => p400}/Q347.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p400}/Q367.java (94%) create mode 100644 5.leetcode/src/com/fanxb/common/p400/Q373.java rename 5.leetcode/src/com/fanxb/common/{ => p400}/Q374.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p400}/Q380.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p400}/Q383.java (94%) rename 5.leetcode/src/com/fanxb/common/{ => p400}/Q392.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p500}/Q401.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p500}/Q406.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p500}/Q412.java (96%) create mode 100644 5.leetcode/src/com/fanxb/common/p500/Q427.java rename 5.leetcode/src/com/fanxb/common/{ => p500}/Q433.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p500}/Q435.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p500}/Q452.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p500}/Q455.java (95%) create mode 100644 5.leetcode/src/com/fanxb/common/p600/Q502.java rename 5.leetcode/src/com/fanxb/common/{ => p600}/Q507.java (92%) rename 5.leetcode/src/com/fanxb/common/{ => p600}/Q524.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p600}/Q530.java (87%) rename 5.leetcode/src/com/fanxb/common/{ => p600}/Q539.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p600}/Q540.java (97%) rename 5.leetcode/src/com/fanxb/common/{ => p700}/Q605.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p700}/Q633.java (96%) rename 5.leetcode/src/com/fanxb/common/{ => p700}/Q637.java (92%) rename 5.leetcode/src/com/fanxb/common/{ => p700}/Q665.java (98%) rename 5.leetcode/src/com/fanxb/common/{ => p700}/Q680.java (95%) diff --git a/5.leetcode/src/com/fanxb/common/ListNode.java b/5.leetcode/src/com/fanxb/common/ListNode.java index 93a4750..d645484 100644 --- a/5.leetcode/src/com/fanxb/common/ListNode.java +++ b/5.leetcode/src/com/fanxb/common/ListNode.java @@ -1,8 +1,8 @@ package com.fanxb.common; public class ListNode { - int val; - ListNode next; + public int val; + public ListNode next; public ListNode() { } diff --git a/5.leetcode/src/com/fanxb/common/Q215.java b/5.leetcode/src/com/fanxb/common/Q215.java deleted file mode 100644 index cc8b440..0000000 --- a/5.leetcode/src/com/fanxb/common/Q215.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.fanxb.common; - -import java.util.*; - -public class Q215 { - - public int findKthLargest(int[] nums, int k) { - //堆 - List heads = new ArrayList<>(k + 1); - heads.add(0); - - for (int num : nums) { - //建堆 - if (heads.size() < k + 1) { - heads.add(num); - for (int i = heads.size() - 1; i > 0; i--) { - cal(heads, i); - } - } else if (num >= heads.get(1)) { - heads.set(1, num); - cal(heads, 1); - } - } - return heads.get(1); - } - - private static void cal(List heads, int i) { - int left = 2 * i; - if (left < heads.size() && heads.get(i) > heads.get(left)) { - Collections.swap(heads, i, left); - cal(heads, left); - } - int right = 2 * i + 1; - if (right < heads.size() && heads.get(i) > heads.get(right)) { - Collections.swap(heads, i, right); - cal(heads, right); - } - } - - public static void main(String[] args) { - int[] people = {3, 2, 3, 1, 2, 4, 5, 5, 6}; - System.out.println(new Q215().findKthLargest(people, 4)); - } -} diff --git a/5.leetcode/src/com/fanxb/common/Q918.java b/5.leetcode/src/com/fanxb/common/Q918.java new file mode 100644 index 0000000..f2c258e --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/Q918.java @@ -0,0 +1,15 @@ +package com.fanxb.common; + +public class Q918 { + public int maxSubarraySumCircular(int[] nums) { + int total = nums[0], curMax = nums[0], totalMax = nums[0], curMin = nums[0], totalMin = nums[0]; + for (int i = 1; i < nums.length; i++) { + curMax = Math.max(curMax + nums[i], nums[i]); + totalMax = Math.max(curMax, totalMax); + total += nums[i]; + curMin = Math.min(curMin + nums[i], nums[i]); + totalMin = Math.min(curMin, totalMin); + } + return totalMax > 0 ? Math.max(totalMax, total - totalMin) : totalMax; + } +} diff --git a/5.leetcode/src/com/fanxb/common/TreeNode.java b/5.leetcode/src/com/fanxb/common/TreeNode.java index 6cc0dd9..0b831bb 100644 --- a/5.leetcode/src/com/fanxb/common/TreeNode.java +++ b/5.leetcode/src/com/fanxb/common/TreeNode.java @@ -1,9 +1,9 @@ package com.fanxb.common; public class TreeNode { - int val; - TreeNode left; - TreeNode right; + public int val; + public TreeNode left; + public TreeNode right; TreeNode() { } diff --git a/5.leetcode/src/com/fanxb/common/p100/ListNode.java b/5.leetcode/src/com/fanxb/common/p100/ListNode.java new file mode 100644 index 0000000..31d5c17 --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/p100/ListNode.java @@ -0,0 +1,18 @@ +package com.fanxb.common.p100; + +public class ListNode { + int val; + ListNode next; + + public ListNode() { + } + + public ListNode(int val) { + this.val = val; + } + + public ListNode(int val, ListNode next) { + this.val = val; + this.next = next; + } +} diff --git a/5.leetcode/src/com/fanxb/common/Q1.java b/5.leetcode/src/com/fanxb/common/p100/Q1.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q1.java rename to 5.leetcode/src/com/fanxb/common/p100/Q1.java index 30e46b7..bda1a9d 100644 --- a/5.leetcode/src/com/fanxb/common/Q1.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q1.java @@ -1,55 +1,55 @@ -package com.fanxb.common; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author fanxb - * @date 2021年12月26日 22:02 - */ -public class Q1 { - public int[] twoSum(int[] nums, int target) { - Map numIndexMap = new HashMap<>(nums.length); - for (int i = 0; i < nums.length; i++) { - numIndexMap.put(nums[i], i); - } - int cur; - Integer targetIndex; - for (int i = 0; i < nums.length; i++) { - cur = nums[i]; - targetIndex = numIndexMap.get(target - cur); - if (targetIndex != null && targetIndex > i) { - return new int[]{i, targetIndex}; - } - } - return null; - } - - public int[] twoSum1(int[] nums, int target) { - Map map = new HashMap<>(); - for (int i = 0; i < nums.length; i++) map.put(nums[i], i); - for (int i = 0; i < nums.length; i++) { - Integer targetI = map.get(target - nums[i]); - if (targetI != null && targetI != i) return new int[]{i, map.get(target - nums[i])}; - } - return null; - } - - /** - * 更优,一次循环即可 - * - * @return int[] - * @author fanxb - * @date 2021/12/26 22:08 - */ - public int[] betterTwoSum(int[] nums, int target) { - Map numIndexMap = new HashMap<>(nums.length); - for (int i = 0; i < nums.length; i++) { - if (numIndexMap.containsKey(target - nums[i])) { - return new int[]{numIndexMap.get(target - nums[i]), i}; - } - numIndexMap.put(nums[i], i); - } - return null; - } -} +package com.fanxb.common.p100; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author fanxb + * @date 2021年12月26日 22:02 + */ +public class Q1 { + public int[] twoSum(int[] nums, int target) { + Map numIndexMap = new HashMap<>(nums.length); + for (int i = 0; i < nums.length; i++) { + numIndexMap.put(nums[i], i); + } + int cur; + Integer targetIndex; + for (int i = 0; i < nums.length; i++) { + cur = nums[i]; + targetIndex = numIndexMap.get(target - cur); + if (targetIndex != null && targetIndex > i) { + return new int[]{i, targetIndex}; + } + } + return null; + } + + public int[] twoSum1(int[] nums, int target) { + Map map = new HashMap<>(); + for (int i = 0; i < nums.length; i++) map.put(nums[i], i); + for (int i = 0; i < nums.length; i++) { + Integer targetI = map.get(target - nums[i]); + if (targetI != null && targetI != i) return new int[]{i, map.get(target - nums[i])}; + } + return null; + } + + /** + * 更优,一次循环即可 + * + * @return int[] + * @author fanxb + * @date 2021/12/26 22:08 + */ + public int[] betterTwoSum(int[] nums, int target) { + Map numIndexMap = new HashMap<>(nums.length); + for (int i = 0; i < nums.length; i++) { + if (numIndexMap.containsKey(target - nums[i])) { + return new int[]{numIndexMap.get(target - nums[i]), i}; + } + numIndexMap.put(nums[i], i); + } + return null; + } +} diff --git a/5.leetcode/src/com/fanxb/common/Q11.java b/5.leetcode/src/com/fanxb/common/p100/Q11.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q11.java rename to 5.leetcode/src/com/fanxb/common/p100/Q11.java index c5bfa59..31a872e 100644 --- a/5.leetcode/src/com/fanxb/common/Q11.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q11.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q12.java b/5.leetcode/src/com/fanxb/common/p100/Q12.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q12.java rename to 5.leetcode/src/com/fanxb/common/p100/Q12.java index 801749a..91df4c9 100644 --- a/5.leetcode/src/com/fanxb/common/Q12.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q12.java @@ -1,7 +1,4 @@ -package com.fanxb.common; - -import java.util.HashMap; -import java.util.Map; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q13.java b/5.leetcode/src/com/fanxb/common/p100/Q13.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q13.java rename to 5.leetcode/src/com/fanxb/common/p100/Q13.java index f904ed4..53d60e4 100644 --- a/5.leetcode/src/com/fanxb/common/Q13.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q13.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.HashMap; import java.util.Map; diff --git a/5.leetcode/src/com/fanxb/common/Q14.java b/5.leetcode/src/com/fanxb/common/p100/Q14.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q14.java rename to 5.leetcode/src/com/fanxb/common/p100/Q14.java index f11a439..78bf86e 100644 --- a/5.leetcode/src/com/fanxb/common/Q14.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q14.java @@ -1,7 +1,5 @@ -package com.fanxb.common; +package com.fanxb.common.p100; -import java.util.HashMap; -import java.util.Map; import java.util.stream.Stream; /** diff --git a/5.leetcode/src/com/fanxb/common/Q15.java b/5.leetcode/src/com/fanxb/common/p100/Q15.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q15.java rename to 5.leetcode/src/com/fanxb/common/p100/Q15.java index 494cbf3..30bcc8a 100644 --- a/5.leetcode/src/com/fanxb/common/Q15.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q15.java @@ -1,7 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.*; -import java.util.stream.Stream; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q19.java b/5.leetcode/src/com/fanxb/common/p100/Q19.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q19.java rename to 5.leetcode/src/com/fanxb/common/p100/Q19.java index 6404fc7..dd0812f 100644 --- a/5.leetcode/src/com/fanxb/common/Q19.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q19.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; public class Q19 { public static class ListNode { diff --git a/5.leetcode/src/com/fanxb/common/Q2.java b/5.leetcode/src/com/fanxb/common/p100/Q2.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q2.java rename to 5.leetcode/src/com/fanxb/common/p100/Q2.java index 11c63dd..ae73b74 100644 --- a/5.leetcode/src/com/fanxb/common/Q2.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q2.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; /** * 两数相加 diff --git a/5.leetcode/src/com/fanxb/common/Q21.java b/5.leetcode/src/com/fanxb/common/p100/Q21.java similarity index 75% rename from 5.leetcode/src/com/fanxb/common/Q21.java rename to 5.leetcode/src/com/fanxb/common/p100/Q21.java index caf228b..4de113d 100644 --- a/5.leetcode/src/com/fanxb/common/Q21.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q21.java @@ -1,10 +1,12 @@ -package com.fanxb.common; +package com.fanxb.common.p100; + +import com.fanxb.common.ListNode; public class Q21 { - public ListNode mergeTwoLists(ListNode list1, ListNode list2) { + public com.fanxb.common.ListNode mergeTwoLists(com.fanxb.common.ListNode list1, com.fanxb.common.ListNode list2) { if (list2 == null) return list1; if (list1 == null) return list2; - ListNode res = null; + com.fanxb.common.ListNode res = null; if (list1.val < list2.val) { res = list1; list1 = list1.next; diff --git a/5.leetcode/src/com/fanxb/common/Q22.java b/5.leetcode/src/com/fanxb/common/p100/Q22.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q22.java rename to 5.leetcode/src/com/fanxb/common/p100/Q22.java index 2e426bc..2cf331f 100644 --- a/5.leetcode/src/com/fanxb/common/Q22.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q22.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.ArrayList; import java.util.HashSet; diff --git a/5.leetcode/src/com/fanxb/common/Q23.java b/5.leetcode/src/com/fanxb/common/p100/Q23.java similarity index 77% rename from 5.leetcode/src/com/fanxb/common/Q23.java rename to 5.leetcode/src/com/fanxb/common/p100/Q23.java index 778fbac..608ded2 100644 --- a/5.leetcode/src/com/fanxb/common/Q23.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q23.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.*; import java.util.stream.Collectors; @@ -102,6 +102,40 @@ public class Q23 { return listNodeList.get(0); } + public ListNode so3(ListNode[] lists) { + if (lists == null || lists.length == 0) return null; + return dfs(lists, 0, lists.length - 1); + } + + private ListNode dfs(ListNode[] lists, int startI, int endI) { + if (startI > endI) return null; + if (startI == endI) return lists[startI]; + ListNode one, two; + if (endI - startI > 1) { + int mid = (startI + endI) / 2; + one = dfs(lists, startI, mid); + two = dfs(lists, mid + 1, endI); + } else { + one = lists[startI]; + two = lists[endI]; + } + ListNode res = new ListNode(); + ListNode temp = res; + while (one != null && two != null) { + if (one.val <= two.val) { + temp.next = one; + one = one.next; + } else { + temp.next = two; + two = two.next; + } + temp = temp.next; + } + if (one != null) temp.next = one; + else if (two != null) temp.next = two; + return res.next; + } + public static void main(String[] args) { ListNode a = new ListNode(1); a.next = new ListNode(4); diff --git a/5.leetcode/src/com/fanxb/common/Q25.java b/5.leetcode/src/com/fanxb/common/p100/Q25.java similarity index 63% rename from 5.leetcode/src/com/fanxb/common/Q25.java rename to 5.leetcode/src/com/fanxb/common/p100/Q25.java index c0c4e75..261f2ef 100644 --- a/5.leetcode/src/com/fanxb/common/Q25.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q25.java @@ -1,13 +1,15 @@ -package com.fanxb.common; +package com.fanxb.common.p100; + +import com.fanxb.common.ListNode; public class Q25 { - public ListNode reverseKGroup(ListNode head, int k) { - ListNode res = new ListNode(), index = head; + public com.fanxb.common.ListNode reverseKGroup(com.fanxb.common.ListNode head, int k) { + com.fanxb.common.ListNode res = new com.fanxb.common.ListNode(), index = head; res.next = head; int count = 0; //left:开始翻转节点的父节点 //right:结束翻转的节点 - ListNode beforeL = res, l = beforeL.next, r, afterR; + com.fanxb.common.ListNode beforeL = res, l = beforeL.next, r, afterR; while (index != null) { if (++count == k) { //进行翻转 @@ -34,22 +36,22 @@ public class Q25 { * @param start * @param n */ - private void reverse(ListNode start, int n) { + private void reverse(com.fanxb.common.ListNode start, int n) { //反转节点 - ListNode prev = null; + com.fanxb.common.ListNode prev = null; for (int i = 0; i < n; i++) { - ListNode next = start.next; + com.fanxb.common.ListNode next = start.next; start.next = prev; prev = start; start = next; } } - public ListNode newReverseKGroup(ListNode head, int k) { + public com.fanxb.common.ListNode newReverseKGroup(com.fanxb.common.ListNode head, int k) { if (k == 1) return head; boolean firstDeal = true; int count = 0; - ListNode res = head, left = null, right, lastRight = null; + com.fanxb.common.ListNode res = head, left = null, right, lastRight = null; while (head != null) { if (left == null) left = head; count++; @@ -73,8 +75,8 @@ public class Q25 { return res; } - private void reverse(ListNode start, ListNode end) { - ListNode last = start, current = start.next, next, temp = end.next; + private void reverse(com.fanxb.common.ListNode start, com.fanxb.common.ListNode end) { + com.fanxb.common.ListNode last = start, current = start.next, next, temp = end.next; while (current != null && current != temp) { next = current.next; current.next = last; @@ -85,12 +87,12 @@ public class Q25 { } - public ListNode new1ReverseKGroup(ListNode head, int k) { - ListNode res = new ListNode(0); + public com.fanxb.common.ListNode new1ReverseKGroup(com.fanxb.common.ListNode head, int k) { + com.fanxb.common.ListNode res = new com.fanxb.common.ListNode(0); res.next = head; - ListNode pre = res, next; + com.fanxb.common.ListNode pre = res, next; while (head != null) { - ListNode end = head; + com.fanxb.common.ListNode end = head; for (int i = 0; i < k - 1 && end != null; i++) end = end.next; if (end == null) break; next = end.next; @@ -104,8 +106,8 @@ public class Q25 { return res.next; } - public ListNode reverse1(ListNode head) { - ListNode pre = head, cur = head.next, next; + public com.fanxb.common.ListNode reverse1(com.fanxb.common.ListNode head) { + com.fanxb.common.ListNode pre = head, cur = head.next, next; while (cur != null) { next = cur.next; cur.next = pre; @@ -116,10 +118,10 @@ public class Q25 { } public static void main(String[] args) { - ListNode node = new ListNode(1); - node.next = new ListNode(2); - node.next.next = new ListNode(3); - node.next.next.next = new ListNode(4); + com.fanxb.common.ListNode node = new com.fanxb.common.ListNode(1); + node.next = new com.fanxb.common.ListNode(2); + node.next.next = new com.fanxb.common.ListNode(3); + node.next.next.next = new com.fanxb.common.ListNode(4); node.next.next.next.next = new ListNode(5); new Q25().new1ReverseKGroup(node, 2); } diff --git a/5.leetcode/src/com/fanxb/common/Q26.java b/5.leetcode/src/com/fanxb/common/p100/Q26.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q26.java rename to 5.leetcode/src/com/fanxb/common/p100/Q26.java index 7b183fe..7cda9d3 100644 --- a/5.leetcode/src/com/fanxb/common/Q26.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q26.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q27.java b/5.leetcode/src/com/fanxb/common/p100/Q27.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q27.java rename to 5.leetcode/src/com/fanxb/common/p100/Q27.java index efc23cd..5ec9c40 100644 --- a/5.leetcode/src/com/fanxb/common/Q27.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q27.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q28.java b/5.leetcode/src/com/fanxb/common/p100/Q28.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q28.java rename to 5.leetcode/src/com/fanxb/common/p100/Q28.java index f7475b2..14a9d28 100644 --- a/5.leetcode/src/com/fanxb/common/Q28.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q28.java @@ -1,6 +1,4 @@ -package com.fanxb.common; - -import java.text.SimpleDateFormat; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q3.java b/5.leetcode/src/com/fanxb/common/p100/Q3.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q3.java rename to 5.leetcode/src/com/fanxb/common/p100/Q3.java index 9954a4d..b137f16 100644 --- a/5.leetcode/src/com/fanxb/common/Q3.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q3.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q33.java b/5.leetcode/src/com/fanxb/common/p100/Q33.java similarity index 58% rename from 5.leetcode/src/com/fanxb/common/Q33.java rename to 5.leetcode/src/com/fanxb/common/p100/Q33.java index be42f69..8b4ce3c 100644 --- a/5.leetcode/src/com/fanxb/common/Q33.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q33.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; public class Q33 { @@ -47,7 +47,34 @@ public class Q33 { return nums[l] == target ? l : -1; } + public int search1(int[] nums, int target) { + int n = nums.length; + int l = 0, r = n - 1; + while (l <= r) { + int mid = (l + r) / 2; + if (nums[mid] == target) return mid; + if (nums[l] > nums[r]) { + //说明l,r分别在两段中 + if (target < nums[l]) { + //说明target在右边的段 + if (nums[mid] >= nums[l]) l = mid + 1; //mid在左边 + else if (nums[mid] > target) r = mid - 1; //mid在左边 + else l = mid + 1; + } else { + //target在左边的段 + if (nums[mid] < nums[l]) r = mid - 1; //mid在左边 + else if (nums[mid] > target) r = mid - 1; //mid在右边 + else l = mid + 1; + } + } else { + if (nums[mid] > target) r = mid - 1; + else l = mid + 1; + } + } + return -1; + } + public static void main(String[] args) { - System.out.println(new Q33().search(new int[]{1, 3}, 0)); + System.out.println(new Q33().search1(new int[]{4, 5, 6, 7, 0, 1, 2}, 0)); } } diff --git a/5.leetcode/src/com/fanxb/common/Q34.java b/5.leetcode/src/com/fanxb/common/p100/Q34.java similarity index 75% rename from 5.leetcode/src/com/fanxb/common/Q34.java rename to 5.leetcode/src/com/fanxb/common/p100/Q34.java index fe1e764..f470daf 100644 --- a/5.leetcode/src/com/fanxb/common/Q34.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q34.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.Arrays; @@ -63,6 +63,23 @@ public class Q34 { return new int[]{l, r}; } + + public int[] searchRange1(int[] nums, int target) { + if (nums.length == 0) return new int[]{-1, -1}; + int l = 0, r = nums.length - 1, index = -1; + while (l <= r) { + int mid = (l + r) / 2; + if (nums[mid] == target) index = mid; + if (nums[mid] > target) r = mid - 1; + else l = mid + 1; + } + if (index == -1) return new int[]{-1, -1}; + int resL = index, resR = index; + while (resR < nums.length - 1 && nums[resR + 1] == target) resR++; + while (resL > 0 && nums[resL - 1] == target) resL--; + return new int[]{resL, resR}; + } + public static void main(String[] args) { System.out.println(Arrays.toString(new Q34().searchRange(new int[]{1, 4}, 4))); } diff --git a/5.leetcode/src/com/fanxb/common/p100/Q35.java b/5.leetcode/src/com/fanxb/common/p100/Q35.java new file mode 100644 index 0000000..f87b124 --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/p100/Q35.java @@ -0,0 +1,14 @@ +package com.fanxb.common.p100; + +public class Q35 { + public int searchInsert(int[] nums, int target) { + int l = 0, r = nums.length - 1; + while (l <= r) { + int mid = (l + r) / 2; + if (nums[mid] == target) return mid; + else if (nums[mid] > target) r = mid + 1; + else l = mid + 1; + } + return l; + } +} diff --git a/5.leetcode/src/com/fanxb/common/Q36.java b/5.leetcode/src/com/fanxb/common/p100/Q36.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q36.java rename to 5.leetcode/src/com/fanxb/common/p100/Q36.java index 7910b25..ba2b97d 100644 --- a/5.leetcode/src/com/fanxb/common/Q36.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q36.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q39.java b/5.leetcode/src/com/fanxb/common/p100/Q39.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q39.java rename to 5.leetcode/src/com/fanxb/common/p100/Q39.java index 7abeded..49a72c8 100644 --- a/5.leetcode/src/com/fanxb/common/Q39.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q39.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q4.java b/5.leetcode/src/com/fanxb/common/p100/Q4.java similarity index 55% rename from 5.leetcode/src/com/fanxb/common/Q4.java rename to 5.leetcode/src/com/fanxb/common/p100/Q4.java index 4faecb0..fa477c1 100644 --- a/5.leetcode/src/com/fanxb/common/Q4.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q4.java @@ -1,6 +1,4 @@ -package com.fanxb.common; - -import java.util.Arrays; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA @@ -8,7 +6,6 @@ import java.util.Arrays; * 地址: https://leetcode-cn.com/problems/sqrtx/ * 思路: 双路规避排序查找 * - * * @author fanxb * Date: 2020/6/11 9:56 */ @@ -40,7 +37,28 @@ public class Q4 { return isDoubleSize ? (value + value2) / 2.0 : value2; } + public double findMedianSortedArrays1(int[] nums1, int[] nums2) { + int m = nums1.length, n = nums2.length; + int mid1 = (m + n + 1) / 2, mid2 = (m + n + 2) / 2; + return (findK(nums1, 0, m - 1, nums2, 0, n - 1, mid1) + findK(nums1, 0, m - 1, nums2, 0, n - 1, mid2)) / 2.0; + } + + // 两个数组中找第k小的数 + private int findK(int[] arr1, int start1, int end1, int[] arr2, int start2, int end2, int k) { + int l1 = end1 - start1 + 1, l2 = end2 - start2 + 1; + if (l1 == 0) return arr2[start2 + k - 1]; + if (l2 == 0) return arr1[start1 + k - 1]; + if (k == 1) return Math.min(arr1[start1], arr2[start2]); + int index1 = start1 + Math.min(k / 2, l1) - 1; + int index2 = start2 + Math.min(k / 2, l2) - 1; + if (arr1[index1] >= arr2[index2]) + return findK(arr1, start1, end1, arr2, index2 + 1, end2, k - (index2 - start2 + 1)); + else + return findK(arr1, index1 + 1, end1, arr2, start2, end2, k - (index1 - start1 + 1)); + } + + public static void main(String[] args) { - System.out.println(new Q4().findMedianSortedArrays(new int[]{2,3,4}, new int[]{1})); + System.out.println(new Q4().findMedianSortedArrays1(new int[]{1, 2}, new int[]{3, 4})); } } diff --git a/5.leetcode/src/com/fanxb/common/Q40.java b/5.leetcode/src/com/fanxb/common/p100/Q40.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q40.java rename to 5.leetcode/src/com/fanxb/common/p100/Q40.java index cb2b3ab..6324f95 100644 --- a/5.leetcode/src/com/fanxb/common/Q40.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q40.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q42.java b/5.leetcode/src/com/fanxb/common/p100/Q42.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q42.java rename to 5.leetcode/src/com/fanxb/common/p100/Q42.java index 5cfba89..6841fa0 100644 --- a/5.leetcode/src/com/fanxb/common/Q42.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q42.java @@ -1,7 +1,5 @@ -package com.fanxb.common; +package com.fanxb.common.p100; -import java.util.ArrayList; -import java.util.List; import java.util.Stack; /** diff --git a/5.leetcode/src/com/fanxb/common/Q45.java b/5.leetcode/src/com/fanxb/common/p100/Q45.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q45.java rename to 5.leetcode/src/com/fanxb/common/p100/Q45.java index 97a365b..04daa62 100644 --- a/5.leetcode/src/com/fanxb/common/Q45.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q45.java @@ -1,6 +1,4 @@ -package com.fanxb.common; - -import java.util.Stack; +package com.fanxb.common.p100; /** * @author fanxb diff --git a/5.leetcode/src/com/fanxb/common/Q46.java b/5.leetcode/src/com/fanxb/common/p100/Q46.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q46.java rename to 5.leetcode/src/com/fanxb/common/p100/Q46.java index afd4432..5283b75 100644 --- a/5.leetcode/src/com/fanxb/common/Q46.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q46.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.ArrayList; import java.util.LinkedList; diff --git a/5.leetcode/src/com/fanxb/common/Q47.java b/5.leetcode/src/com/fanxb/common/p100/Q47.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q47.java rename to 5.leetcode/src/com/fanxb/common/p100/Q47.java index 5e262d5..5b7d18a 100644 --- a/5.leetcode/src/com/fanxb/common/Q47.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q47.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.ArrayList; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q48.java b/5.leetcode/src/com/fanxb/common/p100/Q48.java similarity index 90% rename from 5.leetcode/src/com/fanxb/common/Q48.java rename to 5.leetcode/src/com/fanxb/common/p100/Q48.java index cd076be..0ef0812 100644 --- a/5.leetcode/src/com/fanxb/common/Q48.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q48.java @@ -1,9 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p100; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; -import java.util.Stack; public class Q48 { diff --git a/5.leetcode/src/com/fanxb/common/Q49.java b/5.leetcode/src/com/fanxb/common/p100/Q49.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q49.java rename to 5.leetcode/src/com/fanxb/common/p100/Q49.java index ef0bee7..d136591 100644 --- a/5.leetcode/src/com/fanxb/common/Q49.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q49.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q5.java b/5.leetcode/src/com/fanxb/common/p100/Q5.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q5.java rename to 5.leetcode/src/com/fanxb/common/p100/Q5.java index dbb3a12..7f214fa 100644 --- a/5.leetcode/src/com/fanxb/common/Q5.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q5.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; /** * 定义dp[i][j]表示从i到j的字符串是否为回文串 diff --git a/5.leetcode/src/com/fanxb/common/Q52.java b/5.leetcode/src/com/fanxb/common/p100/Q52.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q52.java rename to 5.leetcode/src/com/fanxb/common/p100/Q52.java index c395d43..58cba09 100644 --- a/5.leetcode/src/com/fanxb/common/Q52.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q52.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.ArrayList; import java.util.List; diff --git a/5.leetcode/src/com/fanxb/common/p100/Q53.java b/5.leetcode/src/com/fanxb/common/p100/Q53.java new file mode 100644 index 0000000..0375271 --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/p100/Q53.java @@ -0,0 +1,20 @@ +package com.fanxb.common.p100; + +/** + * 转移方程:dp[i]表示当以i为结尾时的最大子数组和 + * 当dp[i-1]>0时dp[i]=dp[i-1]+nums[i] + * 否则dp[i]=nums[i] + */ +public class Q53 { + public int maxSubArray(int[] nums) { + + int res = nums[0]; + int last = nums[0]; + for (int i = 1; i < nums.length; i++) { + int newVal = last > 0 ? last + nums[i] : nums[i]; + res = Math.max(res, newVal); + last = newVal; + } + return res; + } +} diff --git a/5.leetcode/src/com/fanxb/common/Q54.java b/5.leetcode/src/com/fanxb/common/p100/Q54.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q54.java rename to 5.leetcode/src/com/fanxb/common/p100/Q54.java index 658ee1b..d7aeedb 100644 --- a/5.leetcode/src/com/fanxb/common/Q54.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q54.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.LinkedList; import java.util.List; diff --git a/5.leetcode/src/com/fanxb/common/Q55.java b/5.leetcode/src/com/fanxb/common/p100/Q55.java similarity index 83% rename from 5.leetcode/src/com/fanxb/common/Q55.java rename to 5.leetcode/src/com/fanxb/common/p100/Q55.java index 7d48575..480bbc5 100644 --- a/5.leetcode/src/com/fanxb/common/Q55.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q55.java @@ -1,9 +1,4 @@ -package com.fanxb.common; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Stack; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q56.java b/5.leetcode/src/com/fanxb/common/p100/Q56.java similarity index 90% rename from 5.leetcode/src/com/fanxb/common/Q56.java rename to 5.leetcode/src/com/fanxb/common/p100/Q56.java index deccf9d..5f5ced9 100644 --- a/5.leetcode/src/com/fanxb/common/Q56.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q56.java @@ -1,9 +1,7 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.Arrays; import java.util.Comparator; -import java.util.LinkedList; -import java.util.List; public class Q56 { public int[][] merge(int[][] intervals) { diff --git a/5.leetcode/src/com/fanxb/common/Q57.java b/5.leetcode/src/com/fanxb/common/p100/Q57.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q57.java rename to 5.leetcode/src/com/fanxb/common/p100/Q57.java index 12efcee..ceb9911 100644 --- a/5.leetcode/src/com/fanxb/common/Q57.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q57.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q58.java b/5.leetcode/src/com/fanxb/common/p100/Q58.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q58.java rename to 5.leetcode/src/com/fanxb/common/p100/Q58.java index 370c90d..4d027b3 100644 --- a/5.leetcode/src/com/fanxb/common/Q58.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q58.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q6.java b/5.leetcode/src/com/fanxb/common/p100/Q6.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q6.java rename to 5.leetcode/src/com/fanxb/common/p100/Q6.java index 59cc923..029d9a9 100644 --- a/5.leetcode/src/com/fanxb/common/Q6.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q6.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q61.java b/5.leetcode/src/com/fanxb/common/p100/Q61.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q61.java rename to 5.leetcode/src/com/fanxb/common/p100/Q61.java index 57ff0f1..db7a159 100644 --- a/5.leetcode/src/com/fanxb/common/Q61.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q61.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; /** * 旋转链表 diff --git a/5.leetcode/src/com/fanxb/common/Q62.java b/5.leetcode/src/com/fanxb/common/p100/Q62.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q62.java rename to 5.leetcode/src/com/fanxb/common/p100/Q62.java index d7c51ff..4214e65 100644 --- a/5.leetcode/src/com/fanxb/common/Q62.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q62.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q63.java b/5.leetcode/src/com/fanxb/common/p100/Q63.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q63.java rename to 5.leetcode/src/com/fanxb/common/p100/Q63.java index faad793..3fd29a5 100644 --- a/5.leetcode/src/com/fanxb/common/Q63.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q63.java @@ -1,6 +1,4 @@ -package com.fanxb.common; - -import java.util.Arrays; +package com.fanxb.common.p100; /** * TODO diff --git a/5.leetcode/src/com/fanxb/common/Q64.java b/5.leetcode/src/com/fanxb/common/p100/Q64.java similarity index 91% rename from 5.leetcode/src/com/fanxb/common/Q64.java rename to 5.leetcode/src/com/fanxb/common/p100/Q64.java index 43d02d5..62adc45 100644 --- a/5.leetcode/src/com/fanxb/common/Q64.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q64.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/p100/Q67.java b/5.leetcode/src/com/fanxb/common/p100/Q67.java new file mode 100644 index 0000000..a9a1a2d --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/p100/Q67.java @@ -0,0 +1,18 @@ +package com.fanxb.common.p100; + +public class Q67 { + public String addBinary(String a, String b) { + int m = a.length(), n = b.length(); + if (m < n) return addBinary(b, a); + char[] acs = a.toCharArray(); + int temp = 0; + for (int i = 0; i < m; i++) { + int ac = acs[m - 1 - i] - '0'; + int bc = n - 1 - i >= 0 ? b.charAt(n - 1 - i) - '0' : 0; + int val = ac + bc + temp; + temp = val >= 2 ? 1 : 0; + acs[m - 1 - i] = (char) ('0' + val % 2); + } + return (temp == 1 ? "1" : "") + new String(acs); + } +} diff --git a/5.leetcode/src/com/fanxb/common/Q68.java b/5.leetcode/src/com/fanxb/common/p100/Q68.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q68.java rename to 5.leetcode/src/com/fanxb/common/p100/Q68.java index ae2e305..204a87b 100644 --- a/5.leetcode/src/com/fanxb/common/Q68.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q68.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q69.java b/5.leetcode/src/com/fanxb/common/p100/Q69.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q69.java rename to 5.leetcode/src/com/fanxb/common/p100/Q69.java index a9b0ad9..19852a3 100644 --- a/5.leetcode/src/com/fanxb/common/Q69.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q69.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q7.java b/5.leetcode/src/com/fanxb/common/p100/Q7.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q7.java rename to 5.leetcode/src/com/fanxb/common/p100/Q7.java index 7f7aff3..3feece5 100644 --- a/5.leetcode/src/com/fanxb/common/Q7.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q7.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; public class Q7 { public int reverse(int x) { diff --git a/5.leetcode/src/com/fanxb/common/Q70.java b/5.leetcode/src/com/fanxb/common/p100/Q70.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q70.java rename to 5.leetcode/src/com/fanxb/common/p100/Q70.java index 5109278..2965cc4 100644 --- a/5.leetcode/src/com/fanxb/common/Q70.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q70.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; /** * 定义f(n)表示爬n级台阶的方法 diff --git a/5.leetcode/src/com/fanxb/common/Q71.java b/5.leetcode/src/com/fanxb/common/p100/Q71.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q71.java rename to 5.leetcode/src/com/fanxb/common/p100/Q71.java index 4da4230..b4fda78 100644 --- a/5.leetcode/src/com/fanxb/common/Q71.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q71.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.List; import java.util.Stack; diff --git a/5.leetcode/src/com/fanxb/common/Q72.java b/5.leetcode/src/com/fanxb/common/p100/Q72.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q72.java rename to 5.leetcode/src/com/fanxb/common/p100/Q72.java index aca3f4b..1f950e5 100644 --- a/5.leetcode/src/com/fanxb/common/Q72.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q72.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; /** * 编辑距离,可以对任意一个单词增加一个字母;删除一个字母;替换一个字母; diff --git a/5.leetcode/src/com/fanxb/common/Q73.java b/5.leetcode/src/com/fanxb/common/p100/Q73.java similarity index 92% rename from 5.leetcode/src/com/fanxb/common/Q73.java rename to 5.leetcode/src/com/fanxb/common/p100/Q73.java index 7021ce7..7b28a2c 100644 --- a/5.leetcode/src/com/fanxb/common/Q73.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q73.java @@ -1,8 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p100; -import java.util.Arrays; - public class Q73 { public void setZeroes(int[][] matrix) { diff --git a/5.leetcode/src/com/fanxb/common/Q74.java b/5.leetcode/src/com/fanxb/common/p100/Q74.java similarity index 68% rename from 5.leetcode/src/com/fanxb/common/Q74.java rename to 5.leetcode/src/com/fanxb/common/p100/Q74.java index cf26063..3d0d52d 100644 --- a/5.leetcode/src/com/fanxb/common/Q74.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q74.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.Arrays; @@ -7,7 +7,6 @@ import java.util.Arrays; * 题目地址: https://leetcode-cn.com/problems/search-a-2d-matrix/ * 解题思路:两次二分即可,第一次二分列找到所在行,然后二分所在行找到是否存在目标值(由于行列数少于100,直接搜索问题也不大) * - * * @author fanxb * Date: 2020/6/9 15:10 */ @@ -27,6 +26,20 @@ public class Q74 { return Arrays.stream(matrix[m - 1]).anyMatch(item -> item == target); } + public static boolean solution1(int[][] matrix, int target) { + int m = matrix.length, n = matrix[0].length; + int l = 0, r = m * n - 1; + while (l <= r) { + int mid = (l + r) / 2; + int[] midP = new int[]{mid / n, mid % n}; + int val = matrix[midP[0]][midP[1]]; + if (val == target) return true; + else if (val < target) l = mid + 1; + else r = mid - 1; + } + return false; + } + public static void main(String[] args) { int[][] s = {{1, 3, 5, 7}, {10, 11, 16, 20}, {23, 30, 34, 6}}; System.out.println(solution(s, 3)); diff --git a/5.leetcode/src/com/fanxb/common/Q76.java b/5.leetcode/src/com/fanxb/common/p100/Q76.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q76.java rename to 5.leetcode/src/com/fanxb/common/p100/Q76.java index 26c52f2..da9b68a 100644 --- a/5.leetcode/src/com/fanxb/common/Q76.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q76.java @@ -1,7 +1,4 @@ -package com.fanxb.common; - -import java.util.*; -import java.util.stream.Collectors; +package com.fanxb.common.p100; /** * 最小覆盖子串 diff --git a/5.leetcode/src/com/fanxb/common/Q77.java b/5.leetcode/src/com/fanxb/common/p100/Q77.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q77.java rename to 5.leetcode/src/com/fanxb/common/p100/Q77.java index 376d879..02d4fac 100644 --- a/5.leetcode/src/com/fanxb/common/Q77.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q77.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.ArrayList; import java.util.LinkedList; diff --git a/5.leetcode/src/com/fanxb/common/Q78.java b/5.leetcode/src/com/fanxb/common/p100/Q78.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q78.java rename to 5.leetcode/src/com/fanxb/common/p100/Q78.java index 181fd7f..13be8a4 100644 --- a/5.leetcode/src/com/fanxb/common/Q78.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q78.java @@ -1,7 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Stack; diff --git a/5.leetcode/src/com/fanxb/common/Q79.java b/5.leetcode/src/com/fanxb/common/p100/Q79.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q79.java rename to 5.leetcode/src/com/fanxb/common/p100/Q79.java index 78e2fa0..0dc75bb 100644 --- a/5.leetcode/src/com/fanxb/common/Q79.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q79.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; public class Q79 { private int[][] step = new int[][]{{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; diff --git a/5.leetcode/src/com/fanxb/common/Q80.java b/5.leetcode/src/com/fanxb/common/p100/Q80.java similarity index 92% rename from 5.leetcode/src/com/fanxb/common/Q80.java rename to 5.leetcode/src/com/fanxb/common/p100/Q80.java index 594acab..e8b89ab 100644 --- a/5.leetcode/src/com/fanxb/common/Q80.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q80.java @@ -1,8 +1,4 @@ -package com.fanxb.common; - -import java.util.ArrayList; -import java.util.List; -import java.util.Stack; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q81.java b/5.leetcode/src/com/fanxb/common/p100/Q81.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q81.java rename to 5.leetcode/src/com/fanxb/common/p100/Q81.java index 49439a5..e5a3aad 100644 --- a/5.leetcode/src/com/fanxb/common/Q81.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q81.java @@ -1,6 +1,4 @@ -package com.fanxb.common; - -import java.util.Arrays; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q82.java b/5.leetcode/src/com/fanxb/common/p100/Q82.java similarity index 73% rename from 5.leetcode/src/com/fanxb/common/Q82.java rename to 5.leetcode/src/com/fanxb/common/p100/Q82.java index 6c5396a..52bd277 100644 --- a/5.leetcode/src/com/fanxb/common/Q82.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q82.java @@ -1,9 +1,11 @@ -package com.fanxb.common; +package com.fanxb.common.p100; + +import com.fanxb.common.ListNode; public class Q82 { - public ListNode deleteDuplicates(ListNode head) { + public com.fanxb.common.ListNode deleteDuplicates(com.fanxb.common.ListNode head) { if (head == null || head.next == null) return head; - ListNode res = new ListNode(), last = res, startBefore = null; + com.fanxb.common.ListNode res = new com.fanxb.common.ListNode(), last = res, startBefore = null; res.next = head; while (head.next != null) { if (head.val == head.next.val) { @@ -23,8 +25,8 @@ public class Q82 { return res.next; } - public ListNode better(ListNode head) { - ListNode res = new ListNode(); + public com.fanxb.common.ListNode better(com.fanxb.common.ListNode head) { + com.fanxb.common.ListNode res = new com.fanxb.common.ListNode(); res.next = head; ListNode cur = res.next, last = res; while (cur != null && cur.next != null) { diff --git a/5.leetcode/src/com/fanxb/common/Q83.java b/5.leetcode/src/com/fanxb/common/p100/Q83.java similarity index 93% rename from 5.leetcode/src/com/fanxb/common/Q83.java rename to 5.leetcode/src/com/fanxb/common/p100/Q83.java index bb4a456..57ba533 100644 --- a/5.leetcode/src/com/fanxb/common/Q83.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q83.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; /** * TODO 类描述 @@ -41,7 +41,7 @@ public class Q83 { * 递归版块 * * @param head head - * @return com.fanxb.common.Q83.ListNode + * @return com.fanxb.common.p200.Q100.Q83.ListNode * @author fanxb * @date 2021/3/26 **/ diff --git a/5.leetcode/src/com/fanxb/common/Q84.java b/5.leetcode/src/com/fanxb/common/p100/Q84.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q84.java rename to 5.leetcode/src/com/fanxb/common/p100/Q84.java index f0677d2..f380c95 100644 --- a/5.leetcode/src/com/fanxb/common/Q84.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q84.java @@ -1,7 +1,5 @@ -package com.fanxb.common; +package com.fanxb.common.p100; -import java.util.Arrays; -import java.util.LinkedList; import java.util.Stack; /** diff --git a/5.leetcode/src/com/fanxb/common/Q86.java b/5.leetcode/src/com/fanxb/common/p100/Q86.java similarity index 59% rename from 5.leetcode/src/com/fanxb/common/Q86.java rename to 5.leetcode/src/com/fanxb/common/p100/Q86.java index ba2a9cd..b2a41b6 100644 --- a/5.leetcode/src/com/fanxb/common/Q86.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q86.java @@ -1,10 +1,12 @@ -package com.fanxb.common; +package com.fanxb.common.p100; + +import com.fanxb.common.ListNode; public class Q86 { - public ListNode partition(ListNode head, int x) { - ListNode res = new ListNode(-1); + public com.fanxb.common.ListNode partition(com.fanxb.common.ListNode head, int x) { + com.fanxb.common.ListNode res = new com.fanxb.common.ListNode(-1); res.next = head; - ListNode bigList = new ListNode(-1); + com.fanxb.common.ListNode bigList = new com.fanxb.common.ListNode(-1); ListNode pre = res, cur = head, bigCur = bigList; while (cur != null) { if (cur.val >= x) { diff --git a/5.leetcode/src/com/fanxb/common/Q88.java b/5.leetcode/src/com/fanxb/common/p100/Q88.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q88.java rename to 5.leetcode/src/com/fanxb/common/p100/Q88.java index 41852ea..244ddeb 100644 --- a/5.leetcode/src/com/fanxb/common/Q88.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q88.java @@ -1,7 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.Arrays; -import java.util.Collections; /** * 合并两个有序数组 diff --git a/5.leetcode/src/com/fanxb/common/Q9.java b/5.leetcode/src/com/fanxb/common/p100/Q9.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q9.java rename to 5.leetcode/src/com/fanxb/common/p100/Q9.java index f0f654f..367ed09 100644 --- a/5.leetcode/src/com/fanxb/common/Q9.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q9.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q90.java b/5.leetcode/src/com/fanxb/common/p100/Q90.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q90.java rename to 5.leetcode/src/com/fanxb/common/p100/Q90.java index bf2d2ca..66e3574 100644 --- a/5.leetcode/src/com/fanxb/common/Q90.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q90.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p100; import java.util.ArrayList; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q92.java b/5.leetcode/src/com/fanxb/common/p100/Q92.java similarity index 91% rename from 5.leetcode/src/com/fanxb/common/Q92.java rename to 5.leetcode/src/com/fanxb/common/p100/Q92.java index 79b6dc6..3a3b1ea 100644 --- a/5.leetcode/src/com/fanxb/common/Q92.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q92.java @@ -1,9 +1,4 @@ -package com.fanxb.common; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Stack; +package com.fanxb.common.p100; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q94.java b/5.leetcode/src/com/fanxb/common/p100/Q94.java similarity index 66% rename from 5.leetcode/src/com/fanxb/common/Q94.java rename to 5.leetcode/src/com/fanxb/common/p100/Q94.java index f54a2a6..b52862a 100644 --- a/5.leetcode/src/com/fanxb/common/Q94.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q94.java @@ -1,16 +1,18 @@ -package com.fanxb.common; +package com.fanxb.common.p100; + +import com.fanxb.common.TreeNode; import java.util.ArrayList; import java.util.List; import java.util.Stack; public class Q94 { - public List inorderTraversal(TreeNode root) { + public List inorderTraversal(com.fanxb.common.TreeNode root) { List res = new ArrayList<>(); if (root == null) return res; - Stack stack = new Stack<>(); + Stack stack = new Stack<>(); stack.push(root); - TreeNode cur = root.left; + com.fanxb.common.TreeNode cur = root.left; while (!stack.isEmpty() || cur != null) { while (cur != null) { stack.push(cur); diff --git a/5.leetcode/src/com/fanxb/common/Q98.java b/5.leetcode/src/com/fanxb/common/p100/Q98.java similarity index 75% rename from 5.leetcode/src/com/fanxb/common/Q98.java rename to 5.leetcode/src/com/fanxb/common/p100/Q98.java index 6bd73f7..bddb3c7 100644 --- a/5.leetcode/src/com/fanxb/common/Q98.java +++ b/5.leetcode/src/com/fanxb/common/p100/Q98.java @@ -1,9 +1,11 @@ -package com.fanxb.common; +package com.fanxb.common.p100; + +import com.fanxb.common.TreeNode; public class Q98 { private Integer lastVal = null; - public boolean isValidBST(TreeNode root) { + public boolean isValidBST(com.fanxb.common.TreeNode root) { return dfs(root); } diff --git a/5.leetcode/src/com/fanxb/common/Q100.java b/5.leetcode/src/com/fanxb/common/p200/Q100.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q100.java rename to 5.leetcode/src/com/fanxb/common/p200/Q100.java index dc9e0e7..a7e7ded 100644 --- a/5.leetcode/src/com/fanxb/common/Q100.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q100.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; public class Q100 { public static class TreeNode { diff --git a/5.leetcode/src/com/fanxb/common/Q101.java b/5.leetcode/src/com/fanxb/common/p200/Q101.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q101.java rename to 5.leetcode/src/com/fanxb/common/p200/Q101.java index 5ee874d..1045662 100644 --- a/5.leetcode/src/com/fanxb/common/Q101.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q101.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; public class Q101 { public static class TreeNode { diff --git a/5.leetcode/src/com/fanxb/common/Q102.java b/5.leetcode/src/com/fanxb/common/p200/Q102.java similarity index 92% rename from 5.leetcode/src/com/fanxb/common/Q102.java rename to 5.leetcode/src/com/fanxb/common/p200/Q102.java index 3d7886b..4d49600 100644 --- a/5.leetcode/src/com/fanxb/common/Q102.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q102.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; import java.util.ArrayList; import java.util.LinkedList; diff --git a/5.leetcode/src/com/fanxb/common/Q103.java b/5.leetcode/src/com/fanxb/common/p200/Q103.java similarity index 92% rename from 5.leetcode/src/com/fanxb/common/Q103.java rename to 5.leetcode/src/com/fanxb/common/p200/Q103.java index 03026e3..dbc5bbb 100644 --- a/5.leetcode/src/com/fanxb/common/Q103.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q103.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q104.java b/5.leetcode/src/com/fanxb/common/p200/Q104.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q104.java rename to 5.leetcode/src/com/fanxb/common/p200/Q104.java index 0f2ccff..76363bd 100644 --- a/5.leetcode/src/com/fanxb/common/Q104.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q104.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; public class Q104 { public static class TreeNode { diff --git a/5.leetcode/src/com/fanxb/common/Q105.java b/5.leetcode/src/com/fanxb/common/p200/Q105.java similarity index 92% rename from 5.leetcode/src/com/fanxb/common/Q105.java rename to 5.leetcode/src/com/fanxb/common/p200/Q105.java index 02969d0..645b5a6 100644 --- a/5.leetcode/src/com/fanxb/common/Q105.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q105.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; import java.util.HashMap; import java.util.Map; diff --git a/5.leetcode/src/com/fanxb/common/Q106.java b/5.leetcode/src/com/fanxb/common/p200/Q106.java similarity index 92% rename from 5.leetcode/src/com/fanxb/common/Q106.java rename to 5.leetcode/src/com/fanxb/common/p200/Q106.java index 87898b6..b99d8af 100644 --- a/5.leetcode/src/com/fanxb/common/Q106.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q106.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; import java.util.HashMap; import java.util.Map; diff --git a/5.leetcode/src/com/fanxb/common/p200/Q108.java b/5.leetcode/src/com/fanxb/common/p200/Q108.java new file mode 100644 index 0000000..2bf3bf6 --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/p200/Q108.java @@ -0,0 +1,21 @@ +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; + +public class Q108 { + public TreeNode sortedArrayToBST(int[] nums) { + return dfs(nums, 0, nums.length - 1); + } + + private TreeNode dfs(int[] nums, int l, int r) { + if (l > r) return null; + if (l == r) return new TreeNode(nums[l]); + int mid = (l + r) / 2; + TreeNode node = new TreeNode(nums[mid]); + node.left = dfs(nums, l, mid - 1); + node.right = dfs(nums, mid + 1, r); + return node; + } + + +} diff --git a/5.leetcode/src/com/fanxb/common/Q112.java b/5.leetcode/src/com/fanxb/common/p200/Q112.java similarity index 92% rename from 5.leetcode/src/com/fanxb/common/Q112.java rename to 5.leetcode/src/com/fanxb/common/p200/Q112.java index 2766767..2375d90 100644 --- a/5.leetcode/src/com/fanxb/common/Q112.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q112.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; import java.util.LinkedList; diff --git a/5.leetcode/src/com/fanxb/common/Q114.java b/5.leetcode/src/com/fanxb/common/p200/Q114.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q114.java rename to 5.leetcode/src/com/fanxb/common/p200/Q114.java index d1fcd26..eb0497f 100644 --- a/5.leetcode/src/com/fanxb/common/Q114.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q114.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; import java.util.LinkedList; diff --git a/5.leetcode/src/com/fanxb/common/Q117.java b/5.leetcode/src/com/fanxb/common/p200/Q117.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q117.java rename to 5.leetcode/src/com/fanxb/common/p200/Q117.java index d2db8af..168c295 100644 --- a/5.leetcode/src/com/fanxb/common/Q117.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q117.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.ArrayList; import java.util.LinkedList; diff --git a/5.leetcode/src/com/fanxb/common/Q120.java b/5.leetcode/src/com/fanxb/common/p200/Q120.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q120.java rename to 5.leetcode/src/com/fanxb/common/p200/Q120.java index 99b1d43..6ec3d81 100644 --- a/5.leetcode/src/com/fanxb/common/Q120.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q120.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.Arrays; import java.util.List; diff --git a/5.leetcode/src/com/fanxb/common/Q121.java b/5.leetcode/src/com/fanxb/common/p200/Q121.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q121.java rename to 5.leetcode/src/com/fanxb/common/p200/Q121.java index 1370a4e..30dfcc0 100644 --- a/5.leetcode/src/com/fanxb/common/Q121.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q121.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; /** * 线性扫描,只需找到最大和最小数的差即可,假设第一个数为最小值,从第二个数开始遍历,如果大于最小值则计算利润,如果小于最小值就将最小值设置当前值,然后继续往后便利,知道遍历完毕 diff --git a/5.leetcode/src/com/fanxb/common/Q122.java b/5.leetcode/src/com/fanxb/common/p200/Q122.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q122.java rename to 5.leetcode/src/com/fanxb/common/p200/Q122.java index da1c8b2..c60bd47 100644 --- a/5.leetcode/src/com/fanxb/common/Q122.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q122.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.HashMap; import java.util.LinkedList; diff --git a/5.leetcode/src/com/fanxb/common/Q123.java b/5.leetcode/src/com/fanxb/common/p200/Q123.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q123.java rename to 5.leetcode/src/com/fanxb/common/p200/Q123.java index e431e91..2f05ea6 100644 --- a/5.leetcode/src/com/fanxb/common/Q123.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q123.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; /** * 题目地址: https://leetcode-cn.com/problems/partition-labels/ diff --git a/5.leetcode/src/com/fanxb/common/Q124.java b/5.leetcode/src/com/fanxb/common/p200/Q124.java similarity index 90% rename from 5.leetcode/src/com/fanxb/common/Q124.java rename to 5.leetcode/src/com/fanxb/common/p200/Q124.java index e132d1e..552eef0 100644 --- a/5.leetcode/src/com/fanxb/common/Q124.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q124.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; public class Q124 { private int resValue = Integer.MIN_VALUE; diff --git a/5.leetcode/src/com/fanxb/common/Q125.java b/5.leetcode/src/com/fanxb/common/p200/Q125.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q125.java rename to 5.leetcode/src/com/fanxb/common/p200/Q125.java index 0b8667b..057797c 100644 --- a/5.leetcode/src/com/fanxb/common/Q125.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q125.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; /** * 题目地址: https://leetcode-cn.com/problems/partition-labels/ diff --git a/5.leetcode/src/com/fanxb/common/Q127.java b/5.leetcode/src/com/fanxb/common/p200/Q127.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q127.java rename to 5.leetcode/src/com/fanxb/common/p200/Q127.java index 239137e..a9eb83f 100644 --- a/5.leetcode/src/com/fanxb/common/Q127.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q127.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q128.java b/5.leetcode/src/com/fanxb/common/p200/Q128.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q128.java rename to 5.leetcode/src/com/fanxb/common/p200/Q128.java index 8b1f2a9..0bcaa84 100644 --- a/5.leetcode/src/com/fanxb/common/Q128.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q128.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.HashSet; diff --git a/5.leetcode/src/com/fanxb/common/Q129.java b/5.leetcode/src/com/fanxb/common/p200/Q129.java similarity index 90% rename from 5.leetcode/src/com/fanxb/common/Q129.java rename to 5.leetcode/src/com/fanxb/common/p200/Q129.java index 05872e2..225ed71 100644 --- a/5.leetcode/src/com/fanxb/common/Q129.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q129.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; public class Q129 { private static class Node { diff --git a/5.leetcode/src/com/fanxb/common/Q130.java b/5.leetcode/src/com/fanxb/common/p200/Q130.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q130.java rename to 5.leetcode/src/com/fanxb/common/p200/Q130.java index 16a765d..3967644 100644 --- a/5.leetcode/src/com/fanxb/common/Q130.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q130.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; public class Q130 { public void solve(char[][] board) { diff --git a/5.leetcode/src/com/fanxb/common/Q131.java b/5.leetcode/src/com/fanxb/common/p200/Q131.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q131.java rename to 5.leetcode/src/com/fanxb/common/p200/Q131.java index 4b018d7..8faf17a 100644 --- a/5.leetcode/src/com/fanxb/common/Q131.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q131.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q132.java b/5.leetcode/src/com/fanxb/common/p200/Q132.java similarity index 93% rename from 5.leetcode/src/com/fanxb/common/Q132.java rename to 5.leetcode/src/com/fanxb/common/p200/Q132.java index f3ae28f..a9796d5 100644 --- a/5.leetcode/src/com/fanxb/common/Q132.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q132.java @@ -1,8 +1,4 @@ -package com.fanxb.common; - -import java.util.ArrayList; -import java.util.List; -import java.util.Stack; +package com.fanxb.common.p200; /** * 分割回文串 diff --git a/5.leetcode/src/com/fanxb/common/Q133.java b/5.leetcode/src/com/fanxb/common/p200/Q133.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q133.java rename to 5.leetcode/src/com/fanxb/common/p200/Q133.java index 8deccdb..772b802 100644 --- a/5.leetcode/src/com/fanxb/common/Q133.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q133.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q134.java b/5.leetcode/src/com/fanxb/common/p200/Q134.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q134.java rename to 5.leetcode/src/com/fanxb/common/p200/Q134.java index 4bb2919..daeff5a 100644 --- a/5.leetcode/src/com/fanxb/common/Q134.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q134.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; /** * 分割回文串 diff --git a/5.leetcode/src/com/fanxb/common/Q135.java b/5.leetcode/src/com/fanxb/common/p200/Q135.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q135.java rename to 5.leetcode/src/com/fanxb/common/p200/Q135.java index 3e8834d..a137077 100644 --- a/5.leetcode/src/com/fanxb/common/Q135.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q135.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.math.BigDecimal; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q138.java b/5.leetcode/src/com/fanxb/common/p200/Q138.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q138.java rename to 5.leetcode/src/com/fanxb/common/p200/Q138.java index 9566de4..1d97629 100644 --- a/5.leetcode/src/com/fanxb/common/Q138.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q138.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.HashMap; import java.util.Map; diff --git a/5.leetcode/src/com/fanxb/common/Q141.java b/5.leetcode/src/com/fanxb/common/p200/Q141.java similarity index 90% rename from 5.leetcode/src/com/fanxb/common/Q141.java rename to 5.leetcode/src/com/fanxb/common/p200/Q141.java index bb7b36d..7cc5ffc 100644 --- a/5.leetcode/src/com/fanxb/common/Q141.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q141.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.ListNode; import java.util.HashMap; import java.util.Map; diff --git a/5.leetcode/src/com/fanxb/common/Q142.java b/5.leetcode/src/com/fanxb/common/p200/Q142.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q142.java rename to 5.leetcode/src/com/fanxb/common/p200/Q142.java index f7920f2..4028791 100644 --- a/5.leetcode/src/com/fanxb/common/Q142.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q142.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.Arrays; import java.util.HashSet; diff --git a/5.leetcode/src/com/fanxb/common/Q144.java b/5.leetcode/src/com/fanxb/common/p200/Q144.java similarity index 89% rename from 5.leetcode/src/com/fanxb/common/Q144.java rename to 5.leetcode/src/com/fanxb/common/p200/Q144.java index 6dba935..4e813cf 100644 --- a/5.leetcode/src/com/fanxb/common/Q144.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q144.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; import java.util.LinkedList; import java.util.List; diff --git a/5.leetcode/src/com/fanxb/common/Q145.java b/5.leetcode/src/com/fanxb/common/p200/Q145.java similarity index 91% rename from 5.leetcode/src/com/fanxb/common/Q145.java rename to 5.leetcode/src/com/fanxb/common/p200/Q145.java index ede47ee..2b31f9f 100644 --- a/5.leetcode/src/com/fanxb/common/Q145.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q145.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; import java.util.ArrayList; import java.util.List; diff --git a/5.leetcode/src/com/fanxb/common/Q146.java b/5.leetcode/src/com/fanxb/common/p200/Q146.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q146.java rename to 5.leetcode/src/com/fanxb/common/p200/Q146.java index 93c1c24..50a75e7 100644 --- a/5.leetcode/src/com/fanxb/common/Q146.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q146.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.HashMap; import java.util.Map; diff --git a/5.leetcode/src/com/fanxb/common/Q146_1.java b/5.leetcode/src/com/fanxb/common/p200/Q146_1.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q146_1.java rename to 5.leetcode/src/com/fanxb/common/p200/Q146_1.java index 70c8f2a..59b7679 100644 --- a/5.leetcode/src/com/fanxb/common/Q146_1.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q146_1.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.HashMap; import java.util.LinkedList; diff --git a/5.leetcode/src/com/fanxb/common/Q148.java b/5.leetcode/src/com/fanxb/common/p200/Q148.java similarity index 56% rename from 5.leetcode/src/com/fanxb/common/Q148.java rename to 5.leetcode/src/com/fanxb/common/p200/Q148.java index 19c7c8a..10ac155 100644 --- a/5.leetcode/src/com/fanxb/common/Q148.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q148.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; /** * TODO @@ -57,6 +57,43 @@ public class Q148 { return res.next; } + public static class Solution { + public ListNode sortList(ListNode head) { + if (head == null || head.next == null) return head; + ListNode mid = findMid(head); + ListNode newMid = mid.next; + mid.next = null; + ListNode left = sortList(head), right = sortList(newMid); + //左右进行归并排序 + ListNode res = new ListNode(0); + ListNode temp = res; + while (left != null && right != null) { + if (left.val <= right.val) { + temp.next = left; + left = left.next; + } else { + temp.next = right; + right = right.next; + } + temp = temp.next; + } + if (left != null) temp.next = left; + else if (right != null) temp.next = right; + return res.next; + } + + private ListNode findMid(ListNode head) { + if (head == null || head.next == null) return head; + ListNode slow = head, fast = head; + while (fast.next != null && fast.next.next != null) { + slow = slow.next; + fast = fast.next.next; + } + return slow; + } + } + + public static void main(String[] args) { ListNode a1 = new ListNode(4); a1.next = new ListNode(2); diff --git a/5.leetcode/src/com/fanxb/common/Q149.java b/5.leetcode/src/com/fanxb/common/p200/Q149.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q149.java rename to 5.leetcode/src/com/fanxb/common/p200/Q149.java index 9069daa..0905d7f 100644 --- a/5.leetcode/src/com/fanxb/common/Q149.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q149.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q150.java b/5.leetcode/src/com/fanxb/common/p200/Q150.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q150.java rename to 5.leetcode/src/com/fanxb/common/p200/Q150.java index 90d9bb1..bb788ee 100644 --- a/5.leetcode/src/com/fanxb/common/Q150.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q150.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.Stack; diff --git a/5.leetcode/src/com/fanxb/common/Q151.java b/5.leetcode/src/com/fanxb/common/p200/Q151.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q151.java rename to 5.leetcode/src/com/fanxb/common/p200/Q151.java index 8fcc19a..259ee6d 100644 --- a/5.leetcode/src/com/fanxb/common/Q151.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q151.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.Stack; diff --git a/5.leetcode/src/com/fanxb/common/Q153.java b/5.leetcode/src/com/fanxb/common/p200/Q153.java similarity index 67% rename from 5.leetcode/src/com/fanxb/common/Q153.java rename to 5.leetcode/src/com/fanxb/common/p200/Q153.java index 4d18444..31e178c 100644 --- a/5.leetcode/src/com/fanxb/common/Q153.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q153.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; /** * Created with IntelliJ IDEA @@ -38,6 +38,28 @@ public class Q153 { return min; } + + public int findMin1(int[] nums) { + int n = nums.length; + if (n == 1) return nums[0]; + int l = 0, r = n - 1; + while (l <= r) { + if (nums[l] < nums[r]) { + //说明l,r在同一段中 + return nums[l]; + } + int mid = (l + r) / 2; + if (nums[mid] > nums[r]) { + //说明mid在左边的段 + l = mid + 1; + } else { + //说明mid在右边的段 + r = mid; + } + } + return nums[l]; + } + public static void main(String[] args) { System.out.println(new Q153().findMin(new int[]{3, 4, 5, 1, 2})); } diff --git a/5.leetcode/src/com/fanxb/common/Q154.java b/5.leetcode/src/com/fanxb/common/p200/Q154.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q154.java rename to 5.leetcode/src/com/fanxb/common/p200/Q154.java index 021e2f2..3224c4b 100644 --- a/5.leetcode/src/com/fanxb/common/Q154.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q154.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q155.java b/5.leetcode/src/com/fanxb/common/p200/Q155.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q155.java rename to 5.leetcode/src/com/fanxb/common/p200/Q155.java index 353699b..a135d1d 100644 --- a/5.leetcode/src/com/fanxb/common/Q155.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q155.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.LinkedList; diff --git a/5.leetcode/src/com/fanxb/common/p200/Q162.java b/5.leetcode/src/com/fanxb/common/p200/Q162.java new file mode 100644 index 0000000..ac01967 --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/p200/Q162.java @@ -0,0 +1,18 @@ +package com.fanxb.common.p200; + +public class Q162 { + public int findPeakElement(int[] nums) { + int n = nums.length; + if (n == 1) return 0; + int l = 0, r = n; + while (l <= r) { + int mid = (l + r) / 2; + Integer midL = mid > 0 && mid < n ? nums[mid - 1] : null; + Integer midR = mid >= 0 && mid < n - 1 ? nums[mid + 1] : null; + if ((midL == null || midL < nums[mid]) && (midR == null || nums[mid] > midR)) return mid; + else if (midR == null || nums[mid] > midR) r = mid - 1; + else l = mid + 1; + } + return l; + } +} diff --git a/5.leetcode/src/com/fanxb/common/Q167.java b/5.leetcode/src/com/fanxb/common/p200/Q167.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q167.java rename to 5.leetcode/src/com/fanxb/common/p200/Q167.java index 7e07bd8..2df5146 100644 --- a/5.leetcode/src/com/fanxb/common/Q167.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q167.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.Arrays; import java.util.EnumSet; diff --git a/5.leetcode/src/com/fanxb/common/Q169.java b/5.leetcode/src/com/fanxb/common/p200/Q169.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q169.java rename to 5.leetcode/src/com/fanxb/common/p200/Q169.java index 306af30..dbf1489 100644 --- a/5.leetcode/src/com/fanxb/common/Q169.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q169.java @@ -1,6 +1,4 @@ -package com.fanxb.common; - -import java.util.Arrays; +package com.fanxb.common.p200; /** * diff --git a/5.leetcode/src/com/fanxb/common/Q173.java b/5.leetcode/src/com/fanxb/common/p200/Q173.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q173.java rename to 5.leetcode/src/com/fanxb/common/p200/Q173.java index 02ce9b6..45b233b 100644 --- a/5.leetcode/src/com/fanxb/common/Q173.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q173.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; import java.util.LinkedList; import java.util.List; diff --git a/5.leetcode/src/com/fanxb/common/Q189.java b/5.leetcode/src/com/fanxb/common/p200/Q189.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q189.java rename to 5.leetcode/src/com/fanxb/common/p200/Q189.java index 127f76c..850343c 100644 --- a/5.leetcode/src/com/fanxb/common/Q189.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q189.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q190.java b/5.leetcode/src/com/fanxb/common/p200/Q190.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q190.java rename to 5.leetcode/src/com/fanxb/common/p200/Q190.java index 0db81ce..eb70398 100644 --- a/5.leetcode/src/com/fanxb/common/Q190.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q190.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; /** * 具有给定数值的最小字符串 diff --git a/5.leetcode/src/com/fanxb/common/Q198.java b/5.leetcode/src/com/fanxb/common/p200/Q198.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q198.java rename to 5.leetcode/src/com/fanxb/common/p200/Q198.java index 90885c6..dcb720b 100644 --- a/5.leetcode/src/com/fanxb/common/Q198.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q198.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p200; public class Q198 { public int rob(int[] nums) { diff --git a/5.leetcode/src/com/fanxb/common/Q199.java b/5.leetcode/src/com/fanxb/common/p200/Q199.java similarity index 93% rename from 5.leetcode/src/com/fanxb/common/Q199.java rename to 5.leetcode/src/com/fanxb/common/p200/Q199.java index b2ef966..ec61380 100644 --- a/5.leetcode/src/com/fanxb/common/Q199.java +++ b/5.leetcode/src/com/fanxb/common/p200/Q199.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p200; + +import com.fanxb.common.TreeNode; import java.util.*; import java.util.concurrent.atomic.AtomicReference; diff --git a/5.leetcode/src/com/fanxb/common/Q200.java b/5.leetcode/src/com/fanxb/common/p300/Q200.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q200.java rename to 5.leetcode/src/com/fanxb/common/p300/Q200.java index d2385ee..fef3abb 100644 --- a/5.leetcode/src/com/fanxb/common/Q200.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q200.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; public class Q200 { public int numIslands(char[][] grid) { diff --git a/5.leetcode/src/com/fanxb/common/Q202.java b/5.leetcode/src/com/fanxb/common/p300/Q202.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q202.java rename to 5.leetcode/src/com/fanxb/common/p300/Q202.java index f0a4861..ec0610b 100644 --- a/5.leetcode/src/com/fanxb/common/Q202.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q202.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.HashSet; import java.util.Set; diff --git a/5.leetcode/src/com/fanxb/common/Q205.java b/5.leetcode/src/com/fanxb/common/p300/Q205.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q205.java rename to 5.leetcode/src/com/fanxb/common/p300/Q205.java index 22ea749..80249af 100644 --- a/5.leetcode/src/com/fanxb/common/Q205.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q205.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q207.java b/5.leetcode/src/com/fanxb/common/p300/Q207.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q207.java rename to 5.leetcode/src/com/fanxb/common/p300/Q207.java index 25c5914..1036b98 100644 --- a/5.leetcode/src/com/fanxb/common/Q207.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q207.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q208.java b/5.leetcode/src/com/fanxb/common/p300/Q208.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q208.java rename to 5.leetcode/src/com/fanxb/common/p300/Q208.java index 63245a0..c038a31 100644 --- a/5.leetcode/src/com/fanxb/common/Q208.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q208.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.ArrayList; import java.util.HashMap; diff --git a/5.leetcode/src/com/fanxb/common/Q209.java b/5.leetcode/src/com/fanxb/common/p300/Q209.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q209.java rename to 5.leetcode/src/com/fanxb/common/p300/Q209.java index e5550c2..bb8f393 100644 --- a/5.leetcode/src/com/fanxb/common/Q209.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q209.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q210.java b/5.leetcode/src/com/fanxb/common/p300/Q210.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q210.java rename to 5.leetcode/src/com/fanxb/common/p300/Q210.java index 80d50df..7dae015 100644 --- a/5.leetcode/src/com/fanxb/common/Q210.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q210.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q211.java b/5.leetcode/src/com/fanxb/common/p300/Q211.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q211.java rename to 5.leetcode/src/com/fanxb/common/p300/Q211.java index bd74d60..9262e4b 100644 --- a/5.leetcode/src/com/fanxb/common/Q211.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q211.java @@ -1,7 +1,4 @@ -package com.fanxb.common; - -import java.util.*; -import java.util.stream.Stream; +package com.fanxb.common.p300; public class Q211 { public static class WordDictionary { diff --git a/5.leetcode/src/com/fanxb/common/Q212.java b/5.leetcode/src/com/fanxb/common/p300/Q212.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q212.java rename to 5.leetcode/src/com/fanxb/common/p300/Q212.java index a242ab2..aa928a5 100644 --- a/5.leetcode/src/com/fanxb/common/Q212.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q212.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.ArrayList; import java.util.HashSet; diff --git a/5.leetcode/src/com/fanxb/common/Q213.java b/5.leetcode/src/com/fanxb/common/p300/Q213.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q213.java rename to 5.leetcode/src/com/fanxb/common/p300/Q213.java index 1c3b25b..c6856f4 100644 --- a/5.leetcode/src/com/fanxb/common/Q213.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q213.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/p300/Q215.java b/5.leetcode/src/com/fanxb/common/p300/Q215.java new file mode 100644 index 0000000..ef78939 --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/p300/Q215.java @@ -0,0 +1,89 @@ +package com.fanxb.common.p300; + +import java.util.*; + +public class Q215 { + + public int findKthLargest(int[] nums, int k) { + //堆 + List heads = new ArrayList<>(k + 1); + heads.add(0); + + for (int num : nums) { + //建堆 + if (heads.size() < k + 1) { + heads.add(num); + for (int i = heads.size() - 1; i > 0; i--) { + cal(heads, i); + } + } else if (num >= heads.get(1)) { + heads.set(1, num); + cal(heads, 1); + } + } + return heads.get(1); + } + + private static void cal(List heads, int i) { + int left = 2 * i; + if (left < heads.size() && heads.get(i) > heads.get(left)) { + Collections.swap(heads, i, left); + cal(heads, left); + } + int right = 2 * i + 1; + if (right < heads.size() && heads.get(i) > heads.get(right)) { + Collections.swap(heads, i, right); + cal(heads, right); + } + } + + private static class Solution { + public int findKthLargest(int[] nums, int k) { + int size = nums.length; + for (int i = parent(size - 1); i >= 0; i--) { + adjust(nums, size, i); + } + for (int i = 0; i < k - 1; i++) { + swap(nums, 0, --size); + adjust(nums, size, 0); + } + return nums[0]; + } + + private void adjust(int[] nums, int size, int i) { + int leftI = left(size, i), rightI = right(size, i); + int maxI = i; + if (leftI > -1 && nums[maxI] < nums[leftI]) maxI = leftI; + if (rightI > -1 && nums[maxI] < nums[rightI]) maxI = rightI; + if (maxI == i) return; + swap(nums, i, maxI); + adjust(nums, size, maxI); + } + + private void swap(int[] nums, int i, int j) { + int temp = nums[i]; + nums[i] = nums[j]; + nums[j] = temp; + } + + private int parent(int i) { + return (i - 1) / 2; + } + + private int left(int size, int i) { + int val = 2 * i + 1; + return val >= size ? -1 : val; + } + + private int right(int size, int i) { + int val = 2 * i + 2; + return val >= size ? -1 : val; + } + + } + + public static void main(String[] args) { + int[] people = {3, 2, 3, 1, 2, 4, 5, 5, 6}; + System.out.println(new Q215().findKthLargest(people, 4)); + } +} diff --git a/5.leetcode/src/com/fanxb/common/Q216.java b/5.leetcode/src/com/fanxb/common/p300/Q216.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q216.java rename to 5.leetcode/src/com/fanxb/common/p300/Q216.java index 5e24889..c612f44 100644 --- a/5.leetcode/src/com/fanxb/common/Q216.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q216.java @@ -1,7 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Stack; diff --git a/5.leetcode/src/com/fanxb/common/Q219.java b/5.leetcode/src/com/fanxb/common/p300/Q219.java similarity index 93% rename from 5.leetcode/src/com/fanxb/common/Q219.java rename to 5.leetcode/src/com/fanxb/common/p300/Q219.java index 8338e1a..cdc1472 100644 --- a/5.leetcode/src/com/fanxb/common/Q219.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q219.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q222.java b/5.leetcode/src/com/fanxb/common/p300/Q222.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q222.java rename to 5.leetcode/src/com/fanxb/common/p300/Q222.java index 1ab5ad5..81c22db 100644 --- a/5.leetcode/src/com/fanxb/common/Q222.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q222.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p300; + +import com.fanxb.common.TreeNode; public class Q222 { private int count = 0; diff --git a/5.leetcode/src/com/fanxb/common/Q224.java b/5.leetcode/src/com/fanxb/common/p300/Q224.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q224.java rename to 5.leetcode/src/com/fanxb/common/p300/Q224.java index ace54b2..be26a5d 100644 --- a/5.leetcode/src/com/fanxb/common/Q224.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q224.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.ArrayList; import java.util.List; diff --git a/5.leetcode/src/com/fanxb/common/Q225.java b/5.leetcode/src/com/fanxb/common/p300/Q225.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q225.java rename to 5.leetcode/src/com/fanxb/common/p300/Q225.java index 5e97529..edc42d9 100644 --- a/5.leetcode/src/com/fanxb/common/Q225.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q225.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.LinkedList; import java.util.Queue; diff --git a/5.leetcode/src/com/fanxb/common/Q226.java b/5.leetcode/src/com/fanxb/common/p300/Q226.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q226.java rename to 5.leetcode/src/com/fanxb/common/p300/Q226.java index 5d076f2..1c3741b 100644 --- a/5.leetcode/src/com/fanxb/common/Q226.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q226.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; public class Q226 { public static class TreeNode { diff --git a/5.leetcode/src/com/fanxb/common/Q228.java b/5.leetcode/src/com/fanxb/common/p300/Q228.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q228.java rename to 5.leetcode/src/com/fanxb/common/p300/Q228.java index 1735ff1..53e5973 100644 --- a/5.leetcode/src/com/fanxb/common/Q228.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q228.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.LinkedList; import java.util.List; diff --git a/5.leetcode/src/com/fanxb/common/Q230.java b/5.leetcode/src/com/fanxb/common/p300/Q230.java similarity index 85% rename from 5.leetcode/src/com/fanxb/common/Q230.java rename to 5.leetcode/src/com/fanxb/common/p300/Q230.java index ab2887b..02f0f00 100644 --- a/5.leetcode/src/com/fanxb/common/Q230.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q230.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p300; + +import com.fanxb.common.TreeNode; public class Q230 { private int res = 0; diff --git a/5.leetcode/src/com/fanxb/common/Q232.java b/5.leetcode/src/com/fanxb/common/p300/Q232.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q232.java rename to 5.leetcode/src/com/fanxb/common/p300/Q232.java index e04fe0f..9422493 100644 --- a/5.leetcode/src/com/fanxb/common/Q232.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q232.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.Stack; diff --git a/5.leetcode/src/com/fanxb/common/Q236.java b/5.leetcode/src/com/fanxb/common/p300/Q236.java similarity index 92% rename from 5.leetcode/src/com/fanxb/common/Q236.java rename to 5.leetcode/src/com/fanxb/common/p300/Q236.java index 14d474b..d41b54e 100644 --- a/5.leetcode/src/com/fanxb/common/Q236.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q236.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p300; + +import com.fanxb.common.TreeNode; import java.util.Stack; diff --git a/5.leetcode/src/com/fanxb/common/Q238.java b/5.leetcode/src/com/fanxb/common/p300/Q238.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q238.java rename to 5.leetcode/src/com/fanxb/common/p300/Q238.java index 774a7d4..9ccb03c 100644 --- a/5.leetcode/src/com/fanxb/common/Q238.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q238.java @@ -1,7 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.Arrays; -import java.util.LinkedList; public class Q238 { diff --git a/5.leetcode/src/com/fanxb/common/Q239.java b/5.leetcode/src/com/fanxb/common/p300/Q239.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q239.java rename to 5.leetcode/src/com/fanxb/common/p300/Q239.java index ac077d1..3801c00 100644 --- a/5.leetcode/src/com/fanxb/common/Q239.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q239.java @@ -1,7 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.*; -import java.util.stream.Collectors; /** * 定义转移方程dp[i][j]为长度为i+1的窗口在位置j的最大值 diff --git a/5.leetcode/src/com/fanxb/common/Q240.java b/5.leetcode/src/com/fanxb/common/p300/Q240.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q240.java rename to 5.leetcode/src/com/fanxb/common/p300/Q240.java index 397dd06..28333eb 100644 --- a/5.leetcode/src/com/fanxb/common/Q240.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q240.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; /** * @author fanxb diff --git a/5.leetcode/src/com/fanxb/common/Q242.java b/5.leetcode/src/com/fanxb/common/p300/Q242.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q242.java rename to 5.leetcode/src/com/fanxb/common/p300/Q242.java index d8572ba..1ce6610 100644 --- a/5.leetcode/src/com/fanxb/common/Q242.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q242.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; /** * @author fanxb diff --git a/5.leetcode/src/com/fanxb/common/Q264.java b/5.leetcode/src/com/fanxb/common/p300/Q264.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q264.java rename to 5.leetcode/src/com/fanxb/common/p300/Q264.java index 0785686..5db9754 100644 --- a/5.leetcode/src/com/fanxb/common/Q264.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q264.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q274.java b/5.leetcode/src/com/fanxb/common/p300/Q274.java similarity index 90% rename from 5.leetcode/src/com/fanxb/common/Q274.java rename to 5.leetcode/src/com/fanxb/common/p300/Q274.java index 6f1b02c..6c9f4ac 100644 --- a/5.leetcode/src/com/fanxb/common/Q274.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q274.java @@ -1,7 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.Arrays; -import java.util.Collections; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q278.java b/5.leetcode/src/com/fanxb/common/p300/Q278.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q278.java rename to 5.leetcode/src/com/fanxb/common/p300/Q278.java index 3227a7e..e689246 100644 --- a/5.leetcode/src/com/fanxb/common/Q278.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q278.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q290.java b/5.leetcode/src/com/fanxb/common/p300/Q290.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q290.java rename to 5.leetcode/src/com/fanxb/common/p300/Q290.java index 0d167cc..352eadc 100644 --- a/5.leetcode/src/com/fanxb/common/Q290.java +++ b/5.leetcode/src/com/fanxb/common/p300/Q290.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p300; import java.util.HashMap; import java.util.List; diff --git a/5.leetcode/src/com/fanxb/common/p300/Q295.java b/5.leetcode/src/com/fanxb/common/p300/Q295.java new file mode 100644 index 0000000..adf753d --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/p300/Q295.java @@ -0,0 +1,40 @@ +package com.fanxb.common.p300; + +import java.util.PriorityQueue; + +public class Q295 { + private static class MedianFinder { + //小于等于中位数的 + private PriorityQueue l; + //大于中位数的 + private PriorityQueue r; + + + public MedianFinder() { + l = new PriorityQueue<>((a, b) -> b - a); + r = new PriorityQueue<>((a, b) -> a - b); + } + + public void addNum(int num) { + if (l.size() == r.size()) { + if (r.isEmpty()) l.add(num); + else if (r.peek() >= num) l.add(num); + else { + l.add(r.poll()); + r.add(num); + } + } else { + if (l.peek() <= num) { + r.add(num); + } else { + r.add(l.poll()); + l.add(num); + } + } + } + + public double findMedian() { + return l.size() == r.size() ? (l.peek() + r.peek()) / 2.0 : l.peek(); + } + } +} diff --git a/5.leetcode/src/com/fanxb/common/Q300.java b/5.leetcode/src/com/fanxb/common/p400/Q300.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q300.java rename to 5.leetcode/src/com/fanxb/common/p400/Q300.java index eb90a1c..a34aa99 100644 --- a/5.leetcode/src/com/fanxb/common/Q300.java +++ b/5.leetcode/src/com/fanxb/common/p400/Q300.java @@ -1,6 +1,4 @@ -package com.fanxb.common; - -import java.util.Stack; +package com.fanxb.common.p400; /** * 定义dp[i]为以nums[i]结尾的子序列最大长度 diff --git a/5.leetcode/src/com/fanxb/common/Q326.java b/5.leetcode/src/com/fanxb/common/p400/Q326.java similarity index 84% rename from 5.leetcode/src/com/fanxb/common/Q326.java rename to 5.leetcode/src/com/fanxb/common/p400/Q326.java index 5ff8868..cb1a57b 100644 --- a/5.leetcode/src/com/fanxb/common/Q326.java +++ b/5.leetcode/src/com/fanxb/common/p400/Q326.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p400; /** * @author fanxb diff --git a/5.leetcode/src/com/fanxb/common/Q337.java b/5.leetcode/src/com/fanxb/common/p400/Q337.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q337.java rename to 5.leetcode/src/com/fanxb/common/p400/Q337.java index 7f10868..c929c54 100644 --- a/5.leetcode/src/com/fanxb/common/Q337.java +++ b/5.leetcode/src/com/fanxb/common/p400/Q337.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p400; + +import com.fanxb.common.TreeNode; import java.util.Arrays; import java.util.HashMap; diff --git a/5.leetcode/src/com/fanxb/common/Q347.java b/5.leetcode/src/com/fanxb/common/p400/Q347.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q347.java rename to 5.leetcode/src/com/fanxb/common/p400/Q347.java index de596e1..59dcfa9 100644 --- a/5.leetcode/src/com/fanxb/common/Q347.java +++ b/5.leetcode/src/com/fanxb/common/p400/Q347.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p400; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q367.java b/5.leetcode/src/com/fanxb/common/p400/Q367.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q367.java rename to 5.leetcode/src/com/fanxb/common/p400/Q367.java index b542828..0ca4341 100644 --- a/5.leetcode/src/com/fanxb/common/Q367.java +++ b/5.leetcode/src/com/fanxb/common/p400/Q367.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p400; import java.util.HashSet; import java.util.Set; diff --git a/5.leetcode/src/com/fanxb/common/p400/Q373.java b/5.leetcode/src/com/fanxb/common/p400/Q373.java new file mode 100644 index 0000000..b0ff42e --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/p400/Q373.java @@ -0,0 +1,26 @@ +package com.fanxb.common.p400; + +import java.util.*; + +public class Q373 { + private boolean isExchange = false; + + public List> kSmallestPairs(int[] nums1, int[] nums2, int k) { + int m = nums1.length, n = nums2.length; + if (m > n) { + isExchange = true; + return kSmallestPairs(nums2, nums1, k); + } + List> res = new LinkedList<>(); + PriorityQueue queue = new PriorityQueue<>(Comparator.comparingInt(a -> a[2])); + for (int i = 0; i < Math.min(m, k); i++) queue.add(new int[]{i, 0, nums1[i] + nums2[0]}); + while (k-- > 0) { + int[] temp = queue.poll(); + if (isExchange) res.add(Arrays.asList(nums2[temp[1]], nums1[temp[0]])); + else res.add(Arrays.asList(nums1[temp[0]], nums2[temp[1]])); + if (temp[1] < n - 1) + queue.add(new int[]{temp[0], temp[1] + 1, nums1[temp[0]] + nums2[temp[1] + 1]}); + } + return res; + } +} diff --git a/5.leetcode/src/com/fanxb/common/Q374.java b/5.leetcode/src/com/fanxb/common/p400/Q374.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q374.java rename to 5.leetcode/src/com/fanxb/common/p400/Q374.java index 85dcb03..2bb1183 100644 --- a/5.leetcode/src/com/fanxb/common/Q374.java +++ b/5.leetcode/src/com/fanxb/common/p400/Q374.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p400; /** * 两数相加 diff --git a/5.leetcode/src/com/fanxb/common/Q380.java b/5.leetcode/src/com/fanxb/common/p400/Q380.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q380.java rename to 5.leetcode/src/com/fanxb/common/p400/Q380.java index 5a890f8..0a8a0ef 100644 --- a/5.leetcode/src/com/fanxb/common/Q380.java +++ b/5.leetcode/src/com/fanxb/common/p400/Q380.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p400; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q383.java b/5.leetcode/src/com/fanxb/common/p400/Q383.java similarity index 94% rename from 5.leetcode/src/com/fanxb/common/Q383.java rename to 5.leetcode/src/com/fanxb/common/p400/Q383.java index 5b6d989..5938ff5 100644 --- a/5.leetcode/src/com/fanxb/common/Q383.java +++ b/5.leetcode/src/com/fanxb/common/p400/Q383.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p400; /** * 两数相加 diff --git a/5.leetcode/src/com/fanxb/common/Q392.java b/5.leetcode/src/com/fanxb/common/p400/Q392.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q392.java rename to 5.leetcode/src/com/fanxb/common/p400/Q392.java index 4d1e2d2..60a2e29 100644 --- a/5.leetcode/src/com/fanxb/common/Q392.java +++ b/5.leetcode/src/com/fanxb/common/p400/Q392.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p400; /** * 两数相加 diff --git a/5.leetcode/src/com/fanxb/common/Q401.java b/5.leetcode/src/com/fanxb/common/p500/Q401.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q401.java rename to 5.leetcode/src/com/fanxb/common/p500/Q401.java index ad90b6d..f38e829 100644 --- a/5.leetcode/src/com/fanxb/common/Q401.java +++ b/5.leetcode/src/com/fanxb/common/p500/Q401.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p500; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q406.java b/5.leetcode/src/com/fanxb/common/p500/Q406.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q406.java rename to 5.leetcode/src/com/fanxb/common/p500/Q406.java index 83a36e1..3672ce8 100644 --- a/5.leetcode/src/com/fanxb/common/Q406.java +++ b/5.leetcode/src/com/fanxb/common/p500/Q406.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p500; import java.util.Arrays; import java.util.LinkedList; diff --git a/5.leetcode/src/com/fanxb/common/Q412.java b/5.leetcode/src/com/fanxb/common/p500/Q412.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q412.java rename to 5.leetcode/src/com/fanxb/common/p500/Q412.java index 043bb18..e353efb 100644 --- a/5.leetcode/src/com/fanxb/common/Q412.java +++ b/5.leetcode/src/com/fanxb/common/p500/Q412.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p500; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/p500/Q427.java b/5.leetcode/src/com/fanxb/common/p500/Q427.java new file mode 100644 index 0000000..1c48a79 --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/p500/Q427.java @@ -0,0 +1,71 @@ +package com.fanxb.common.p500; + +public class Q427 { + private static class Node { + public boolean val; + public boolean isLeaf; + public Node topLeft; + public Node topRight; + public Node bottomLeft; + public Node bottomRight; + + + public Node() { + this.val = false; + this.isLeaf = false; + this.topLeft = null; + this.topRight = null; + this.bottomLeft = null; + this.bottomRight = null; + } + + public Node(boolean val, boolean isLeaf) { + this.val = val; + this.isLeaf = isLeaf; + this.topLeft = null; + this.topRight = null; + this.bottomLeft = null; + this.bottomRight = null; + } + + public Node(boolean val, boolean isLeaf, Node topLeft, Node topRight, Node bottomLeft, Node bottomRight) { + this.val = val; + this.isLeaf = isLeaf; + this.topLeft = topLeft; + this.topRight = topRight; + this.bottomLeft = bottomLeft; + this.bottomRight = bottomRight; + } + } + + public Node construct(int[][] grid) { + return dfs(grid, 0, 0, grid[0].length); + } + + private Node dfs(int[][] grid, int x, int y, int size) { + if (size == 1) return new Node(grid[x][y] == 1, true); + Boolean val = getVal(grid, x, y, size); + if (val == null) { + size = size / 2; + return new Node(false, false, dfs(grid, x, y, size), dfs(grid, x, y + size, size), dfs(grid, x + size, y, size), dfs(grid, x + size, y + size, size)); + } else { + return new Node(val, true); + } + } + + private Boolean getVal(int[][] grid, int x, int y, int size) { + int val = grid[x][y]; + for (int i = 0; i < size; i++) { + for (int j = 0; j < size; j++) { + if (val != grid[x + i][y + j]) return null; + } + } + return val == 1; + } + + public static void main(String[] args) { + int[][] grid = new int[][]{{1, 1, 0, 0, 0, 0, 0, 0}, {1, 1, 0, 0, 0, 0, 0, 0}, {1, 1, 0, 0, 0, 0, 1, 1}, {1, 1, 0, 0, 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 1, 1}, {1, 1, 1, 1, 1, 1, 0, 0}, {1, 1, 1, 1, 1, 1, 0, 0}}; + Node node = new Q427().construct(grid); + System.out.println(node.val); + } +} diff --git a/5.leetcode/src/com/fanxb/common/Q433.java b/5.leetcode/src/com/fanxb/common/p500/Q433.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q433.java rename to 5.leetcode/src/com/fanxb/common/p500/Q433.java index de64402..75ec1a9 100644 --- a/5.leetcode/src/com/fanxb/common/Q433.java +++ b/5.leetcode/src/com/fanxb/common/p500/Q433.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p500; import java.util.*; diff --git a/5.leetcode/src/com/fanxb/common/Q435.java b/5.leetcode/src/com/fanxb/common/p500/Q435.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q435.java rename to 5.leetcode/src/com/fanxb/common/p500/Q435.java index b0eb650..a202acb 100644 --- a/5.leetcode/src/com/fanxb/common/Q435.java +++ b/5.leetcode/src/com/fanxb/common/p500/Q435.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p500; import java.lang.reflect.AccessibleObject; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q452.java b/5.leetcode/src/com/fanxb/common/p500/Q452.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q452.java rename to 5.leetcode/src/com/fanxb/common/p500/Q452.java index c973c1a..0cb7709 100644 --- a/5.leetcode/src/com/fanxb/common/Q452.java +++ b/5.leetcode/src/com/fanxb/common/p500/Q452.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p500; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/Q455.java b/5.leetcode/src/com/fanxb/common/p500/Q455.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q455.java rename to 5.leetcode/src/com/fanxb/common/p500/Q455.java index 751dd77..e8de5cb 100644 --- a/5.leetcode/src/com/fanxb/common/Q455.java +++ b/5.leetcode/src/com/fanxb/common/p500/Q455.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p500; import java.util.Arrays; diff --git a/5.leetcode/src/com/fanxb/common/p600/Q502.java b/5.leetcode/src/com/fanxb/common/p600/Q502.java new file mode 100644 index 0000000..c334fd7 --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/p600/Q502.java @@ -0,0 +1,24 @@ +package com.fanxb.common.p600; + +import java.util.*; + +public class Q502 { + public int findMaximizedCapital(int k, int w, int[] profits, int[] capital) { + + List list = new ArrayList<>(profits.length); + for (int i = 0; i < profits.length; i++) list.add(new int[]{profits[i], capital[i]}); + list.sort(Comparator.comparingInt(a -> a[1])); + PriorityQueue queue = new PriorityQueue<>(profits.length, (a, b) -> b - a); + int temp = 0; + while (k-- > 0) { + while (temp < profits.length && list.get(temp)[1] <= w) { + queue.add(list.get(temp)[0]); + temp++; + } + if (queue.isEmpty()) return w; + w += queue.poll(); + } + return w; + + } +} diff --git a/5.leetcode/src/com/fanxb/common/Q507.java b/5.leetcode/src/com/fanxb/common/p600/Q507.java similarity index 92% rename from 5.leetcode/src/com/fanxb/common/Q507.java rename to 5.leetcode/src/com/fanxb/common/p600/Q507.java index 7297eb1..92fcb48 100644 --- a/5.leetcode/src/com/fanxb/common/Q507.java +++ b/5.leetcode/src/com/fanxb/common/p600/Q507.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p600; public class Q507 { diff --git a/5.leetcode/src/com/fanxb/common/Q524.java b/5.leetcode/src/com/fanxb/common/p600/Q524.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q524.java rename to 5.leetcode/src/com/fanxb/common/p600/Q524.java index 0a33bfe..8186fd9 100644 --- a/5.leetcode/src/com/fanxb/common/Q524.java +++ b/5.leetcode/src/com/fanxb/common/p600/Q524.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p600; import java.util.Arrays; import java.util.List; diff --git a/5.leetcode/src/com/fanxb/common/Q530.java b/5.leetcode/src/com/fanxb/common/p600/Q530.java similarity index 87% rename from 5.leetcode/src/com/fanxb/common/Q530.java rename to 5.leetcode/src/com/fanxb/common/p600/Q530.java index 40123a9..14d78f7 100644 --- a/5.leetcode/src/com/fanxb/common/Q530.java +++ b/5.leetcode/src/com/fanxb/common/p600/Q530.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p600; + +import com.fanxb.common.TreeNode; public class Q530 { private int res = Integer.MAX_VALUE; diff --git a/5.leetcode/src/com/fanxb/common/Q539.java b/5.leetcode/src/com/fanxb/common/p600/Q539.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q539.java rename to 5.leetcode/src/com/fanxb/common/p600/Q539.java index aa99398..5852118 100644 --- a/5.leetcode/src/com/fanxb/common/Q539.java +++ b/5.leetcode/src/com/fanxb/common/p600/Q539.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p600; import java.util.Arrays; import java.util.List; diff --git a/5.leetcode/src/com/fanxb/common/Q540.java b/5.leetcode/src/com/fanxb/common/p600/Q540.java similarity index 97% rename from 5.leetcode/src/com/fanxb/common/Q540.java rename to 5.leetcode/src/com/fanxb/common/p600/Q540.java index db751e9..41a1519 100644 --- a/5.leetcode/src/com/fanxb/common/Q540.java +++ b/5.leetcode/src/com/fanxb/common/p600/Q540.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p600; /** * Created with IntelliJ IDEA diff --git a/5.leetcode/src/com/fanxb/common/Q605.java b/5.leetcode/src/com/fanxb/common/p700/Q605.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q605.java rename to 5.leetcode/src/com/fanxb/common/p700/Q605.java index e78ac01..0ee98eb 100644 --- a/5.leetcode/src/com/fanxb/common/Q605.java +++ b/5.leetcode/src/com/fanxb/common/p700/Q605.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p700; /** * 具有给定数值的最小字符串 diff --git a/5.leetcode/src/com/fanxb/common/Q633.java b/5.leetcode/src/com/fanxb/common/p700/Q633.java similarity index 96% rename from 5.leetcode/src/com/fanxb/common/Q633.java rename to 5.leetcode/src/com/fanxb/common/p700/Q633.java index 0bd68c4..ece667e 100644 --- a/5.leetcode/src/com/fanxb/common/Q633.java +++ b/5.leetcode/src/com/fanxb/common/p700/Q633.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p700; /** * 平方数之和 diff --git a/5.leetcode/src/com/fanxb/common/Q637.java b/5.leetcode/src/com/fanxb/common/p700/Q637.java similarity index 92% rename from 5.leetcode/src/com/fanxb/common/Q637.java rename to 5.leetcode/src/com/fanxb/common/p700/Q637.java index 0780c1c..ddb5407 100644 --- a/5.leetcode/src/com/fanxb/common/Q637.java +++ b/5.leetcode/src/com/fanxb/common/p700/Q637.java @@ -1,4 +1,6 @@ -package com.fanxb.common; +package com.fanxb.common.p700; + +import com.fanxb.common.TreeNode; import java.util.ArrayList; import java.util.LinkedList; diff --git a/5.leetcode/src/com/fanxb/common/Q665.java b/5.leetcode/src/com/fanxb/common/p700/Q665.java similarity index 98% rename from 5.leetcode/src/com/fanxb/common/Q665.java rename to 5.leetcode/src/com/fanxb/common/p700/Q665.java index c7691a5..8ccde06 100644 --- a/5.leetcode/src/com/fanxb/common/Q665.java +++ b/5.leetcode/src/com/fanxb/common/p700/Q665.java @@ -1,4 +1,4 @@ -package com.fanxb.common; +package com.fanxb.common.p700; import java.util.Arrays; import java.util.LinkedList; diff --git a/5.leetcode/src/com/fanxb/common/Q680.java b/5.leetcode/src/com/fanxb/common/p700/Q680.java similarity index 95% rename from 5.leetcode/src/com/fanxb/common/Q680.java rename to 5.leetcode/src/com/fanxb/common/p700/Q680.java index 6ba5b14..97620d0 100644 --- a/5.leetcode/src/com/fanxb/common/Q680.java +++ b/5.leetcode/src/com/fanxb/common/p700/Q680.java @@ -1,6 +1,4 @@ -package com.fanxb.common; - -import java.util.Arrays; +package com.fanxb.common.p700; /** * 验证回文字符串 Ⅱ