| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,2 @@ | |||
| 1 | + .idea | ||
| 2 | + .vscode | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,5 @@ | |||
| 1 | + public class TestPush { | ||
| 2 | + public static void main(String[] args) { | ||
| 3 | + System.out.println("Hello Geekbang~~"); | ||
| 4 | + } | ||
| 5 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,37 @@ | |||
| 1 | + /* | ||
| 2 | + * 存两个临时变量,left和right, 如果left>right,则返回right; | ||
| 3 | + * 如果只有一个元素,则返回它自己; | ||
| 4 | + * 如果没有旋转过,则返回第一个元素 | ||
| 5 | + */ | ||
| 6 | + class Solution { | ||
| 7 | + public: | ||
| 8 | + int findMin(vector<int>& nums) { | ||
| 9 | + int count = nums.size(); | ||
| 10 | + if (count == 1) { | ||
| 11 | + return nums[0]; | ||
| 12 | + } | ||
| 13 | + | ||
| 14 | + int left = nums[0]; | ||
| 15 | + int right = nums[1]; | ||
| 16 | + if (left > right) { | ||
| 17 | + return right; | ||
| 18 | + } | ||
| 19 | + | ||
| 20 | + int i; | ||
| 21 | + for (i = 2; i < count; i++) { | ||
| 22 | + left = right; | ||
| 23 | + right = nums[i]; | ||
| 24 | + | ||
| 25 | + if (left > right) { | ||
| 26 | + return right; | ||
| 27 | + } | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | + if (i == count) { | ||
| 31 | + return nums[0]; | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + return -1; | ||
| 35 | + } | ||
| 36 | + }; | ||
| 37 | + | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,35 @@ | |||
| 1 | + /* | ||
| 2 | + * 堆栈实现 | ||
| 3 | + * 满足三个条件则有效 | ||
| 4 | + * 1. “左” 压栈 | ||
| 5 | + * 2. “右” 在栈顶查找匹配的括号, 如果找到弹出栈顶字符,否则返回false | ||
| 6 | + * 3. 最终"栈" 为空, 返回true, "栈" 非空, 返回false | ||
| 7 | + * 注意,对于第一次输入是')','}'或者']'的情况,一定要判断堆栈是否为空,否则会数组越界 | ||
| 8 | + */ | ||
| 9 | + | ||
| 10 | + class Solution { | ||
| 11 | + | ||
| 12 | + public: | ||
| 13 | + bool isValid(string s) { | ||
| 14 | + vector<char> stack; | ||
| 15 | + map<char, char> spouse; | ||
| 16 | + | ||
| 17 | + spouse[')'] = '('; | ||
| 18 | + spouse['}'] = '{'; | ||
| 19 | + spouse[']'] = '['; | ||
| 20 | + | ||
| 21 | + for (int i = 0; i< s.size(); ++i) { | ||
| 22 | + if (s[i] =='(' || s[i] =='[' || s[i] =='{') { | ||
| 23 | + stack.push_back(s[i]); | ||
| 24 | + } else { | ||
| 25 | + if (stack.empty() || spouse[s[i]] != stack[stack.size()-1]) { | ||
| 26 | + return false; | ||
| 27 | + } | ||
| 28 | + stack.pop_back(); | ||
| 29 | + } | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + return stack.empty(); | ||
| 33 | + } | ||
| 34 | + }; | ||
| 35 | + | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,73 @@ | |||
| 1 | + /** | ||
| 2 | + * Definition for singly-linked list. | ||
| 3 | + * public class ListNode { | ||
| 4 | + * int val; | ||
| 5 | + * ListNode next; | ||
| 6 | + * ListNode(int x) { val = x; } | ||
| 7 | + * } | ||
| 8 | + */ | ||
| 9 | + class Solution { | ||
| 10 | + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { | ||
| 11 | + if (l1 == null) | ||
| 12 | + return l2; | ||
| 13 | + if (l2 == null) | ||
| 14 | + return l1; | ||
| 15 | + | ||
| 16 | + ListNode cur1 = l1; | ||
| 17 | + ListNode cur2 = l2; | ||
| 18 | + ListNode mergeCur = null; | ||
| 19 | + ListNode mergeHead = null; | ||
| 20 | + | ||
| 21 | + if (cur1.val <= cur2.val) { | ||
| 22 | + mergeCur = cur1; | ||
| 23 | + mergeHead = cur1; | ||
| 24 | + cur1 = cur1.next; | ||
| 25 | + } else { | ||
| 26 | + mergeCur = cur2; | ||
| 27 | + mergeHead = cur2; | ||
| 28 | + cur2 = cur2.next; | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + while (cur1 != null && cur2 != null) { | ||
| 32 | + if (cur1.val <= cur2.val) { | ||
| 33 | + mergeCur.next = cur1; | ||
| 34 | + cur1 = cur1.next; | ||
| 35 | + } else { | ||
| 36 | + mergeCur.next = cur2; | ||
| 37 | + cur2 = cur2.next; | ||
| 38 | + } | ||
| 39 | + mergeCur=mergeCur.next; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + if (cur1 != null) { | ||
| 43 | + mergeCur.next = cur1; | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + if (cur2 != null) { | ||
| 47 | + mergeCur.next = cur2; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + return mergeHead; | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + /** | ||
| 54 | + * 递归思路没有想到,参考网上的相关答案,理解之后写出 | ||
| 55 | + */ | ||
| 56 | + public ListNode mergeTowListsRecursive(ListNode l1, ListNode l2) { | ||
| 57 | + if (l1 == null) | ||
| 58 | + return l2; | ||
| 59 | + if (l2 == null) | ||
| 60 | + return l1; | ||
| 61 | + | ||
| 62 | + | ||
| 63 | + if (l1.val <= l2.val) { | ||
| 64 | + ListNode head = l1; | ||
| 65 | + head.next = mergeTowListsRecursive(l1.next, l2); | ||
| 66 | + return head; | ||
| 67 | + } else { | ||
| 68 | + ListNode head = l2; | ||
| 69 | + head.next = mergeTowListsRecursive(l1, l2.next); | ||
| 70 | + return head; | ||
| 71 | + } | ||
| 72 | + } | ||
| 73 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,21 @@ | |||
| 1 | + /** | ||
| 2 | + * Definition for singly-linked list. | ||
| 3 | + * public class ListNode { | ||
| 4 | + * int val; | ||
| 5 | + * ListNode next; | ||
| 6 | + * ListNode(int x) { val = x; } | ||
| 7 | + * } | ||
| 8 | + */ | ||
| 9 | + class Solution { | ||
| 10 | + public ListNode deleteDuplicates(ListNode head) { | ||
| 11 | + ListNode cur = head; | ||
| 12 | + while (cur != null && cur.next != null) { | ||
| 13 | + if (cur.val == cur.next.val) { | ||
| 14 | + cur.next = cur.next.next; | ||
| 15 | + } else { | ||
| 16 | + cur = cur.next; | ||
| 17 | + } | ||
| 18 | + } | ||
| 19 | + return head; | ||
| 20 | + } | ||
| 21 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1 +1,8 @@ | |||
| 1 | - # 学习笔记 | ||
| 1 | + # 学习笔记 | ||
| 2 | + | ||
| 3 | + ### LeetCode-83思路: | ||
| 4 | + | ||
| 5 | + 见图片: `83.jpeg` | ||
| 6 | + | ||
| 7 | + ### LeetCode-21思路: | ||
| 8 | + | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,58 @@ | |||
| 1 | + /** | ||
| 2 | + * Definition for singly-linked list. | ||
| 3 | + * class ListNode { | ||
| 4 | + * int val; | ||
| 5 | + * ListNode next; | ||
| 6 | + * ListNode(int x) { | ||
| 7 | + * val = x; | ||
| 8 | + * next = null; | ||
| 9 | + * } | ||
| 10 | + * } | ||
| 11 | + */ | ||
| 12 | + public class Solution { | ||
| 13 | + | ||
| 14 | + //暴力解法 | ||
| 15 | + public ListNode detectCycle(ListNode head) { | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + Set<ListNode> set = new HashSet<ListNode>(); | ||
| 19 | + while (head != null) { | ||
| 20 | + if (set.contains(head)) | ||
| 21 | + break; | ||
| 22 | + set.add(head); | ||
| 23 | + head = head.next; | ||
| 24 | + } | ||
| 25 | + return head; | ||
| 26 | + | ||
| 27 | + | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | + public ListNode detectCycle2( ListNode head ) { | ||
| 31 | + if( head == null || head.next == null ){ | ||
| 32 | + return null; | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + //1、寻找相遇点 | ||
| 36 | + ListNode fp = head, sp = head; | ||
| 37 | + while( fp != null && fp.next != null){ | ||
| 38 | + sp = sp.next; | ||
| 39 | + fp = fp.next.next; | ||
| 40 | + if( fp == sp ){ | ||
| 41 | + break; | ||
| 42 | + } | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + //2、没有环的情况直接退出 | ||
| 46 | + if( fp == null || fp.next == null ){ | ||
| 47 | + return null; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + //3、有环时,slow起点设置为head,fast从相遇点出发,相遇点即为入环点 | ||
| 51 | + sp = head; | ||
| 52 | + while( fp != sp ){ | ||
| 53 | + sp = sp.next; | ||
| 54 | + fp = fp.next; | ||
| 55 | + } | ||
| 56 | + return sp; | ||
| 57 | + } | ||
| 58 | + } | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments