diff --git a/Week 01/id_502/LeetCode_1_502.java b/Week 01/id_502/LeetCode_1_502.java new file mode 100644 index 000000000..67e46fc87 --- /dev/null +++ b/Week 01/id_502/LeetCode_1_502.java @@ -0,0 +1,13 @@ +class Solution { + public int[] twoSum(int[] nums, int target) { + for (int i = 0; i < nums.length; i++) { + int other = target - nums[i]; + for (int j=i+1;j> levelOrder(Node root) { + List> res = new ArrayList<>(); + if (root == null) return res; + Queue queue = new LinkedList<>(); + queue.add(root); + while (!queue.isEmpty()) { + int count = queue.size(); + List list = new ArrayList<>(); + while (count-- > 0) { + Node cur = queue.poll(); + list.add(cur.val); + for (Node node : cur.children) { + if (node != null) { + queue.add(node); + } + } + } + res.add(list); + } + return res; + } +} \ No newline at end of file diff --git a/Week 02/id_502/LeetCode_77_502.java b/Week 02/id_502/LeetCode_77_502.java new file mode 100644 index 000000000..635ce89d0 --- /dev/null +++ b/Week 02/id_502/LeetCode_77_502.java @@ -0,0 +1,30 @@ +class Solution { + + private ArrayList> res; + private void generateCombinations(int n, int k, int start, List list) { + if (list.size() == k) { + res.add(new ArrayList<>(list)); + return; + } + + for (int i = start; i <= n - (k - list.size()) + 1; i++) { + list.add(i); + generateCombinations(n, k, i + 1, list); + list.remove(list.size() - 1); + + } + } + + public List> combine(int n, int k) { + + res = new ArrayList<>(); + if (n <= 0 || k <= 0 || k > n) { + return res; + } + List list = new ArrayList<>(); + generateCombinations(n, k, 1, list); + + return res; + + } +} \ No newline at end of file diff --git a/Week 02/id_502/NOTE.md b/Week 02/id_502/NOTE.md index a6321d6e2..b76a84533 100644 --- a/Week 02/id_502/NOTE.md +++ b/Week 02/id_502/NOTE.md @@ -1,4 +1,6 @@ # NOTE - +树的面试题解法一般都是递归,为什么? +1. 树节点的定义 +2. 树结构的限制,并且每个子树都具有重复性 diff --git a/Week 03/id_502/LeetCode_153_502.java b/Week 03/id_502/LeetCode_153_502.java new file mode 100644 index 000000000..4634c8150 --- /dev/null +++ b/Week 03/id_502/LeetCode_153_502.java @@ -0,0 +1,12 @@ +class Solution { + public int findMin(int[] nums) { + int left = 0; + int right = nums.length - 1; + while (left < right) { + int mid = left + (right - left) / 2; + if (nums[mid] > nums[right]) left = mid + 1; + else right = mid; + } + return nums[left]; + } +} \ No newline at end of file diff --git a/Week 03/id_502/LeetCode_200_502.java b/Week 03/id_502/LeetCode_200_502.java new file mode 100644 index 000000000..8dad3fa30 --- /dev/null +++ b/Week 03/id_502/LeetCode_200_502.java @@ -0,0 +1,86 @@ +//DFS +class Solution1 { + int[] dx = {0, 0, -1, 1}; // 上下左右 + int[] dy = {-1, 1, 0, 0}; // 上下左右 + public int numIslands(char[][] grid) { + if (grid.length == 0) { + return 0; + } + boolean[][] visit = new boolean[grid.length][grid[0].length]; + int ret = 0; + for (int i = 0; i < grid.length; i++) { + for (int j = 0; j < grid[0].length; j++) { + if (!visit[i][j] && grid[i][j] == '1') { + dfs(grid, visit, i, j); + ret += 1; + } + } + } + return ret; + } + + // 深度优先搜索 + public void dfs(char[][] grid, boolean[][] visit, int x, int y) { + if (x < 0 || x >= grid.length || y < 0 || y >= grid[0].length) { + return; + } + if (!visit[x][y] && grid[x][y] == '1') { + visit[x][y] = true; + for (int i = 0; i < 4; i++) { + dfs(grid, visit, x + dx[i], y + dy[i]); + } + } + } +} + +//BFS +class Solution2 { + int[] dx = {0, 0, -1, 1}; // 上下左右 + int[] dy = {-1, 1, 0, 0}; // 上下左右 + public int numIslands(char[][] grid) { + if (grid.length == 0) { + return 0; + } + boolean[][] visit = new boolean[grid.length][grid[0].length]; + int ret = 0; + for (int i = 0; i < grid.length; i++) { + for (int j = 0; j < grid[0].length; j++) { + if (!visit[i][j] && grid[i][j] == '1') { + bfs(grid, visit, i, j); + ret += 1; + } + } + } + return ret; + } + + // 广度优先搜索 + public void bfs(char[][] grid, boolean[][] visit, int x, int y) { + Queue queue = new LinkedList<>(); + queue.offer(new Pair(x, y)); + visit[x][y] = true; + while (!queue.isEmpty()) { + Pair top = queue.poll(); + for (int i = 0; i < 4; i++) { + int newX = top.x + dx[i]; + int newY = top.y + dy[i]; + if (newX < 0 || newX >= grid.length || newY < 0 || newY >= grid[0].length) { + continue; + } + if (!visit[newX][newY] && grid[newX][newY] == '1') { + queue.offer(new Pair(newX, newY)); + visit[newX][newY] = true; + } + } + } + } + + static class Pair { + int x; + int y; + Pair(int x, int y) { + this.x = x; + this.y = y; + } + } +} \ No newline at end of file diff --git a/Week 03/id_502/NOTE.md b/Week 03/id_502/NOTE.md index a6321d6e2..582a32dcf 100644 --- a/Week 03/id_502/NOTE.md +++ b/Week 03/id_502/NOTE.md @@ -1,4 +1,11 @@ # NOTE - +* 树的深度优先,一个个子树遍历 +* 树的广度优先,一层层扩散,像水波、地震波 +**什么时候可以用贪心?** +* 问题可以分解成子问题 +* 子问题最优解能递推到最终问题的最优解 + +贪心对每个子问题的解决方案都做出选择,不能回退。 +动态规划会保存以前的运算结果,并根据当前结果对当前进行选择,支持回退。 \ No newline at end of file diff --git a/Week 05/id_502/LeetCode_32_502.py b/Week 05/id_502/LeetCode_32_502.py new file mode 100644 index 000000000..2f5e5a58c --- /dev/null +++ b/Week 05/id_502/LeetCode_32_502.py @@ -0,0 +1,45 @@ + +#最长有效括号 +# 暴力解决:每次取偶数个,时间复杂度:n^2 + +def isValidParentheses(s: str) -> bool: + stack = [] + for i in range(len(s)): + if s[i] == "(": + stack.append("(") + elif len(stack) > 0: + stack.pop() + else: + return False + return (len(stack) == 0) + +def longestValidParentheses_recursion(s: str) -> int: + if not s or len(s) <= 0: + return 0 + res = 0 + + for i in range(len(s)): + for j in range(i+2,len(s)+1, 2): + if (isValidParentheses(s[i:j])): + res = max(res, j-i) + + return res + + +#DP 解决 +def longestValidParentheses_dp(s: str) -> int: + n = len(s) + if n <= 1: return 0 + dp = [0] * n + res = 0 + for i in range(n): + if i>0 and s[i] == ")": + if s[i - 1] == "(": + dp[i] = dp[i - 2] + 2 + elif s[i - 1] == ")" and i - dp[i - 1] - 1 >= 0 and s[i - dp[i - 1] - 1] == "(": + dp[i] = dp[i - 1] + 2 + dp[i - dp[i - 1] - 2] + res = max(res,dp[i]) + return res + +print("recursion:"+str(longestValidParentheses_recursion("(())()"))) +print("dp:"+str(longestValidParentheses_dp("(())()"))) \ No newline at end of file diff --git a/Week 05/id_502/LeetCode_403_502.java b/Week 05/id_502/LeetCode_403_502.java new file mode 100644 index 000000000..95f530255 --- /dev/null +++ b/Week 05/id_502/LeetCode_403_502.java @@ -0,0 +1,32 @@ +public class Solution { + public boolean canCross(int[] stones) { + int[][] memo = new int[stones.length][stones.length]; + for (int[] row : memo) { + Arrays.fill(row, -1); + } + return can_Cross(stones, 0, 0, memo) == 1; + } + public int can_Cross(int[] stones, int ind, int jumpsize, int[][] memo) { + if (memo[ind][jumpsize] >= 0) { + return memo[ind][jumpsize]; + } + + int ind1 = Arrays.binarySearch(stones, ind + 1, stones.length, stones[ind] + jumpsize); + if (ind1 >= 0 && can_Cross(stones, ind1, jumpsize, memo) == 1) { + memo[ind][jumpsize] = 1; + return 1; + } + int ind2 = Arrays.binarySearch(stones, ind + 1, stones.length, stones[ind] + jumpsize - 1); + if (ind2 >= 0 && can_Cross(stones, ind2, jumpsize - 1, memo) == 1) { + memo[ind][jumpsize - 1] = 1; + return 1; + } + int ind3 = Arrays.binarySearch(stones, ind + 1, stones.length, stones[ind] + jumpsize + 1); + if (ind3 >= 0 && can_Cross(stones, ind3, jumpsize + 1, memo) == 1) { + memo[ind][jumpsize + 1] = 1; + return 1; + } + memo[ind][jumpsize] = ((ind == stones.length - 1) ? 1 : 0); + return memo[ind][jumpsize]; + } +} \ No newline at end of file diff --git a/Week 05/id_502/NOTE.md b/Week 05/id_502/NOTE.md index a6321d6e2..5165988d8 100644 --- a/Week 05/id_502/NOTE.md +++ b/Week 05/id_502/NOTE.md @@ -1,4 +1,9 @@ # NOTE +DP 问题的思路: +1. 寻找子问题,要多尝试自底向上分解问题 +2. 状态定义 + 这里的状态定义即是定义初始值 +3. DP 方程 diff --git a/Week 06/id_502/LeetCode_127_502.java b/Week 06/id_502/LeetCode_127_502.java new file mode 100644 index 000000000..d860ce217 --- /dev/null +++ b/Week 06/id_502/LeetCode_127_502.java @@ -0,0 +1,37 @@ +class Solution { + public int ladderLength(String beginWord, String endWord, List wordList) { + Set wordSet = new HashSet<>(wordList.size()); + wordSet.addAll(wordList); + if (!wordSet.contains(endWord)) return 0; + Set s1 = new HashSet<>(); + Set s2 = new HashSet<>(); + s1.add(beginWord); + s2.add(endWord); + int n = beginWord.length(); + int step = 0; + while (!s1.isEmpty() && !s2.isEmpty()) { + step++; + if (s1.size() > s2.size()) { + Set tmp = s1; + s1 = s2; + s2 = tmp; + } + Set s = new HashSet<>(); + for (String word : s1) { + for (int i = 0; i < n; i++) { + char[] chars = word.toCharArray(); + for (char ch = 'a'; ch <= 'z'; ch++) { + chars[i] = ch; + String tmp = new String(chars); + if (s2.contains(tmp)) return step + 1; + if (!wordSet.contains(tmp)) continue; + wordSet.remove(tmp); + s.add(tmp); + } + } + } + s1 = s; + } + return 0; + } +} \ No newline at end of file diff --git a/Week 06/id_502/LeetCode_36_502.java b/Week 06/id_502/LeetCode_36_502.java new file mode 100644 index 000000000..962217b9d --- /dev/null +++ b/Week 06/id_502/LeetCode_36_502.java @@ -0,0 +1,32 @@ +class Solution { + public boolean isValidSudoku(char[][] board) { + for(int i = 0; i < 9; i ++){ + // hori, veti, sqre分别表示行、列、小宫 + int hori = 0, veti = 0, sqre = 0; + for(int j = 0; j < 9; j ++){ + // 由于传入为char,需要转换为int,减48 + int h = board[i][j] - 48; + int v = board[j][i] - 48; + int s = board[3 * (i / 3) + j / 3][3 * (i % 3) + j % 3] - 48; + // "."的ASCII码为46,故小于0代表着当前符号位".",不用讨论 + if(h > 0){ + hori = sodokuer(h, hori); + } + if(v > 0){ + veti = sodokuer(v, veti); + } + if(s > 0){ + sqre = sodokuer(s, sqre); + } + if(hori == -1 || veti == -1 || sqre == -1){ + return false; + } + } + } + return true; + } + + private int sodokuer(int n, int val){ + return ((val >> n) & 1) == 1 ? -1 : val ^ (1 << n); + } +} \ No newline at end of file diff --git a/Week 06/id_502/NOTE.md b/Week 06/id_502/NOTE.md index a6321d6e2..8971db191 100644 --- a/Week 06/id_502/NOTE.md +++ b/Week 06/id_502/NOTE.md @@ -1,4 +1,76 @@ # NOTE - +字典树性质: +节点本身不保存完整单词 +路径才是搜索的字符串 +每个结点的左右子结点路径代表的字符都不相同 +双向BFS代码模板: + + void BFS_bothsides()//双向BFS + { + if(s1.state==s2.state)//起点终点相同时要特判 + { + //do something + found=true; + return; + } + bool found=false; + memset(visited,0,sizeof(visited)); // 判重数组 + while(!Q1.empty()) Q1.pop(); // 正向队列 + while(!Q2.empty()) Q2.pop(); // 反向队列 + //======正向扩展的状态标记为1,反向扩展标记为2 + visited[s1.state]=1; // 初始状态标记为1 + visited[s2.state]=2; // 结束状态标记为2 + Q1.push(s1); // 初始状态入正向队列 + Q2.push(s2); // 结束状态入反向队列 + while(!Q1.empty() || !Q2.empty()) + { + if(!Q1.empty()) + BFS_expand(Q1,true); // 在正向队列中搜索 + if(found) // 搜索结束 + return ; + if(!Q2.empty()) + BFS_expand(Q2,false); // 在反向队列中搜索 + if(found) // 搜索结束 + return ; + } + } + + void BFS_expand(queue &Q,bool flag) + { + s=Q.front(); // 从队列中得到头结点s + Q.pop() + for( 每个s 的子节点 t ) + { + t.state=Gethash(t.temp); // 获取子节点的状态 + if(flag) // 在正向队列中判断 + { + if(visited[t.state]!=1)// 没在正向队列出现过 + { + if(visited[t.state]==2) // 该状态在反向队列中出现过 + { + 各种操作; + found=true; + return; + } + visited[t.state]=1; // 标记为在在正向队列中 + Q.push(t); // 入队 + } + } + else // 在正向队列中判断 + { + if (visited[t.state]!=2) // 没在反向队列出现过 + { + if(visited[t.state]==1) // 该状态在正向向队列中出现过 + { + 各种操作; + found=true; + return; + } + visited[t.state]=2; // 标记为在反向队列中 + Q.push(t); // 入队 + } + } + } + } diff --git a/Week 07/id_502/LeetCode_493_502.java b/Week 07/id_502/LeetCode_493_502.java new file mode 100644 index 000000000..8cb0e3ed1 --- /dev/null +++ b/Week 07/id_502/LeetCode_493_502.java @@ -0,0 +1,50 @@ +class Solution { + public int reversePairs(int[] nums) { + int res = 0; + int[] copy = Arrays.copyOf(nums, nums.length); + int[] bit = new int[copy.length + 1]; + + Arrays.sort(copy); + + for (int ele : nums) { + res += search(bit, index(copy, 2L * ele + 1)); + insert(bit, index(copy, ele)); + } + + return res; + } + + private int search(int[] bit, int i) { + int sum = 0; + + while (i < bit.length) { + sum += bit[i]; + i += i & -i; + } + + return sum; + } + + private void insert(int[] bit, int i) { + while (i > 0) { + bit[i] += 1; + i -= i & -i; + } + } + + private int index(int[] arr, long val) { + int l = 0, r = arr.length - 1, m = 0; + + while (l <= r) { + m = l + ((r - l) >> 1); + + if (arr[m] >= val) { + r = m - 1; + } else { + l = m + 1; + } + } + + return l + 1; + } +} \ No newline at end of file diff --git a/Week 07/id_502/LeetCode_56_502.java b/Week 07/id_502/LeetCode_56_502.java new file mode 100644 index 000000000..42bca197e --- /dev/null +++ b/Week 07/id_502/LeetCode_56_502.java @@ -0,0 +1,24 @@ +class Solution { + public int[][] merge(int[][] intervals) { + LinkedList res = new LinkedList<>(); + if (intervals == null || intervals.length == 0) { + return res.toArray(new int[0][]); + } + + Arrays.sort(intervals, new Comparator() { + @Override + public int compare(int[] o1, int[] o2) { + return o1[0] - o2[0]; + } + }); + + for (int i = 0; i < intervals.length; i++) { + if (res.isEmpty() || res.getLast()[1] < intervals[i][0]) { + res.add(intervals[i]); + } else { + res.getLast()[1] = Math.max(res.getLast()[1], intervals[i][1]); + } + } + return res.toArray(new int[0][0]); + } +} \ No newline at end of file diff --git a/Week 07/id_502/NOTE.md b/Week 07/id_502/NOTE.md index a6321d6e2..cdae349a4 100644 --- a/Week 07/id_502/NOTE.md +++ b/Week 07/id_502/NOTE.md @@ -1,4 +1,161 @@ # NOTE +**排序算法** +**插入排序** + def insertSort(arr): + length = len(arr) + for i in range(1,length): + x = arr[i] + for j in range(i,-1,-1): + if x < arr[j-1]: + arr[j] = arr[j-1] + else: + break + arr[j] = x + +**选择排序** + + def Selectionsort1(): + A = [-9, -8, 640, 25, 12, 22, 33, 23, 45, 11, -2, -5, 99, 0] + for i in range(len(A)): + min = i + for j in range(i + 1, len(A)): + if A[min] > A[j]: + min = j + + A[i], A[min] = A[min], A[i] + +**希尔排序** + + def shellSort(arr): + + n = len(arr) + gap = int(n/2) + while gap > 0: + + for i in range(gap,n): + + temp = arr[i] + j = i + while j >= gap and arr[j-gap] >temp: + arr[j] = arr[j-gap] + j -= gap + arr[j] = temp + gap = int(gap/2) + +**堆排序** + + def heapify(arr, n, i): + largest = i + l = 2 * i + 1 # left = 2*i + 1 + r = 2 * i + 2 # right = 2*i + 2 + if l < n and arr[i] < arr[l]: + largest = l + + if r < n and arr[largest] < arr[r]: + largest = r + + if largest != i: + arr[i],arr[largest] = arr[largest],arr[i] + heapify(arr, n, largest) + + def heapSort(arr): + n = len(arr) + for i in range(n, -1, -1): + heapify(arr, n, i) + + for i in range(n-1, 0, -1): + arr[i], arr[0] = arr[0], arr[i] # 交换 + heapify(arr, i, 0) + + +**冒泡排序** + def bubbleSort(arr): + n = len(arr) + + # 遍历所有数组元素 + for i in range(n): + + # Last i elements are already in place + for j in range(0, n-i-1): + + if arr[j] > arr[j+1] : + arr[j], arr[j+1] = arr[j+1], arr[j] + + +**快速排序** + + def partition(arr,low,high): + i = ( low-1 ) # 最小元素索引 + pivot = arr[high] + + for j in range(low , high): + + # 当前元素小于或等于 pivot + if arr[j] <= pivot: + + i = i+1 + arr[i],arr[j] = arr[j],arr[i] + + arr[i+1],arr[high] = arr[high],arr[i+1] + return ( i+1 ) + + def quickSort(arr,low,high): + if low < high: + + pi = partition(arr,low,high) + + quickSort(arr, low, pi-1) + quickSort(arr, pi+1, high) + +**归并排序** + + def merge(arr, l, m, r): + n1 = m - l + 1 + n2 = r- m + + # 创建临时数组 + L = [0] * (n1) + R = [0] * (n2) + + # 拷贝数据到临时数组 arrays L[] 和 R[] + for i in range(0 , n1): + L[i] = arr[l + i] + + for j in range(0 , n2): + R[j] = arr[m + 1 + j] + + # 归并临时数组到 arr[l..r] + i = 0 # 初始化第一个子数组的索引 + j = 0 # 初始化第二个子数组的索引 + k = l # 初始归并子数组的索引 + + while i < n1 and j < n2 : + if L[i] <= R[j]: + arr[k] = L[i] + i += 1 + else: + arr[k] = R[j] + j += 1 + k += 1 + + # 拷贝 L[] 的保留元素 + while i < n1: + arr[k] = L[i] + i += 1 + k += 1 + + # 拷贝 R[] 的保留元素 + while j < n2: + arr[k] = R[j] + j += 1 + k += 1 + + def mergeSort(arr,l,r): + if l < r: + m = int((l+(r-1))/2) + mergeSort(arr, l, m) + mergeSort(arr, m+1, r) + merge(arr, l, m, r) \ No newline at end of file diff --git a/Week 08/id_502/LeetCode_58_502.java b/Week 08/id_502/LeetCode_58_502.java new file mode 100644 index 000000000..0c43caeaf --- /dev/null +++ b/Week 08/id_502/LeetCode_58_502.java @@ -0,0 +1,10 @@ +class Solution { + public int lengthOfLastWord(String s) { + int end = s.length() - 1; + while(end >= 0 && s.charAt(end) == ' ') end--; + if(end < 0) return 0; + int start = end; + while(start >= 0 && s.charAt(start) != ' ') start--; + return end - start; + } +} \ No newline at end of file diff --git a/Week 08/id_502/LeetCode_8_502.java b/Week 08/id_502/LeetCode_8_502.java new file mode 100644 index 000000000..54d5c79dc --- /dev/null +++ b/Week 08/id_502/LeetCode_8_502.java @@ -0,0 +1,31 @@ +class Solution { + public int myAtoi(String str) { + str = str.trim(); + if (str == null || str.length() == 0) + return 0; + + char firstChar = str.charAt(0); + int sign = 1; + int start = 0; + long res = 0; + if (firstChar == '+') { + sign = 1; + start++; + } else if (firstChar == '-') { + sign = -1; + start++; + } + + for (int i = start; i < str.length(); i++) { + if (!Character.isDigit(str.charAt(i))) { + return (int) res * sign; + } + res = res * 10 + str.charAt(i) - '0'; + if (sign == 1 && res > Integer.MAX_VALUE) + return Integer.MAX_VALUE; + if (sign == -1 && res > Integer.MAX_VALUE) + return Integer.MIN_VALUE; + } + return (int) res * sign; + } +} \ No newline at end of file diff --git a/Week 08/id_502/NOTE.md b/Week 08/id_502/NOTE.md new file mode 100644 index 000000000..8b02249c8 --- /dev/null +++ b/Week 08/id_502/NOTE.md @@ -0,0 +1,4 @@ +# NOTE +字符串是否可变: +Java/Python/Go:字符串是不可变,每次修改字符串,都会生成一个新的字符串,安全性更高 +C++/ruby/PHP/swift:字符串可变,如果需要使用不可变,C++使用const; swift 使用let \ No newline at end of file diff --git "a/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/QuickLook/Preview.jpg" "b/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/QuickLook/Preview.jpg" new file mode 100644 index 000000000..d9a906cd9 Binary files /dev/null and "b/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/QuickLook/Preview.jpg" differ diff --git "a/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/contents.xml" "b/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/contents.xml" new file mode 100644 index 000000000..aead22012 Binary files /dev/null and "b/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/contents.xml" differ diff --git "a/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/style.mindnodestyle/contents.xml" "b/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/style.mindnodestyle/contents.xml" new file mode 100644 index 000000000..bbaedd2f3 --- /dev/null +++ "b/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/style.mindnodestyle/contents.xml" @@ -0,0 +1,278 @@ + + + + + allowNodeStrokeColorVariation + + backgroundColor + {0.956000, 0.966000, 0.956000, 1.000000} + baseSubnode + + shapeStyle + + borderStrokeStyle + + color + {0.689000, 0.215000, 0.952000, 1.000000} + dash + 0 + width + 2 + + fillColor + {1.000000, 1.000000, 1.000000, 1.000000} + shapeType + 0 + + strokeStyle + + color + {0.689000, 0.215000, 0.952000, 1.000000} + dash + 0 + width + 2 + + titleStyle + + alignment + 0 + bold + + color + {0.357000, 0.357000, 0.357000, 1.000000} + fontName + HelveticaNeue + fontSize + 18 + italic + + + + crossConnections + + + arrowStyle + + endArrow + 2 + startArrow + 0 + + pathStyle + + strokeStyle + + color + {0.997000, 0.355000, 0.184000, 1.000000} + dash + 3 + width + 2 + + + titleStyle + + alignment + 0 + bold + + color + {0.000000, 0.000000, 0.000000, 1.000000} + fontName + HelveticaNeue + fontSize + 14 + italic + + strikethrough + + underline + + + + + mainNodes + + + shapeStyle + + borderStrokeStyle + + color + {0.965000, 0.965000, 0.965000, 1.000000} + dash + 0 + width + 2 + + fillColor + {1.000000, 1.000000, 1.000000, 1.000000} + shapeType + 2 + + strokeStyle + + color + {0.965000, 0.965000, 0.965000, 1.000000} + dash + 0 + width + 2 + + titleStyle + + alignment + 0 + bold + + color + {0.086000, 0.482000, 0.592000, 1.000000} + fontName + HelveticaNeue-Light + fontSize + 21 + italic + + + + + subnodeColors + + + shapeStyle + + borderStrokeStyle + + color + {0.689000, 0.215000, 0.952000, 1.000000} + + fillColor + {1.000000, 1.000000, 1.000000, 1.000000} + + strokeStyle + + color + {0.689, 0.215, 0.952, 1.000} + + titleStyle + + color + {0.357, 0.357, 0.357, 1.000} + + + + shapeStyle + + borderStrokeStyle + + color + {0.144000, 0.670000, 1.000000, 1.000000} + + fillColor + {1.000000, 1.000000, 1.000000, 1.000000} + + strokeStyle + + color + {0.144, 0.670, 1.000, 1.000} + + titleStyle + + color + {0.357, 0.357, 0.357, 1.000} + + + + shapeStyle + + borderStrokeStyle + + color + {1.000000, 0.742000, 0.041000, 1.000000} + + fillColor + {1.000000, 1.000000, 1.000000, 1.000000} + + strokeStyle + + color + {1.000, 0.742, 0.041, 1.000} + + titleStyle + + color + {0.357, 0.357, 0.357, 1.000} + + + + shapeStyle + + borderStrokeStyle + + color + {0.136000, 0.807000, 0.880000, 1.000000} + + fillColor + {1.000000, 1.000000, 1.000000, 1.000000} + + strokeStyle + + color + {0.136, 0.807, 0.880, 1.000} + + titleStyle + + color + {0.357, 0.357, 0.357, 1.000} + + + + shapeStyle + + borderStrokeStyle + + color + {0.822000, 0.084000, 0.348000, 1.000000} + + fillColor + {1.000000, 1.000000, 1.000000, 1.000000} + + strokeStyle + + color + {0.822, 0.084, 0.348, 1.000} + + titleStyle + + color + {0.357, 0.357, 0.357, 1.000} + + + + shapeStyle + + borderStrokeStyle + + color + {0.194000, 0.734000, 0.282000, 1.000000} + + fillColor + {1.000000, 1.000000, 1.000000, 1.000000} + + strokeStyle + + color + {0.194, 0.734, 0.282, 1.000} + + titleStyle + + color + {0.357, 0.357, 0.357, 1.000} + + + + subnodeLevels + + + diff --git "a/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/style.mindnodestyle/metadata.plist" "b/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/style.mindnodestyle/metadata.plist" new file mode 100644 index 000000000..4611f4be6 --- /dev/null +++ "b/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/style.mindnodestyle/metadata.plist" @@ -0,0 +1,14 @@ + + + + + author + IdeasOnCanvas + id + A043DFC9-26A6-4B70-9786-B6BD65585BB8 + title + Delight + version + 3 + + diff --git "a/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/viewState.plist" "b/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/viewState.plist" new file mode 100644 index 000000000..3ce52dead Binary files /dev/null and "b/Week \351\242\204\344\271\240\345\221\250/id_502/\351\242\204\344\271\240\345\221\250-\346\225\260\346\215\256\347\273\223\346\236\204-\347\256\227\346\263\225MindeNode.mindnode/viewState.plist" differ