摘要: 1.异或的特性 0 ^ a = a 恒等性 a ^ a = 0 归零性 a^b = b^a 交换律 a^b^c = a^(b^c) = (a^b)^c 结合率 a^b^a = b 自反 根据以上特性:解决 1720. 解码异或后的数组 1734. 解码异或后的排列 1720. 已知 encode: 阅读全文
posted @ 2021-05-12 12:23 wsZzz1997 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 给定一个n找到从1到n的全排列: 首先给定一个[] 第一层:可以放1 , 2 ,3 ,4 ... n 加入进入1,第二层可以放 2 ,3 ,4,5...n 。。。到达第n层即返回一个结果 1.定义一个used的数组:表示哪些数已经被使用了 boolean[] used = new boolean[n 阅读全文
posted @ 2021-05-12 12:07 wsZzz1997 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 思路: 1.i从0开始,j从i+1开始,j往前比较如果比他大(小)交换,直到不能交换为止,说明找到了插入位置,一次遍历完成。 public class InsertSort { // 直接插入排序: // 将当前数插入到已有的数组中,使之有序: // j从i+1开始往前直到找到一个比他大(小)的数为 阅读全文
posted @ 2021-05-05 14:37 wsZzz1997 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 思路: 1.每一趟,交换相邻两个数,前一个数大的(小的)往后放,一趟下来,最大(小)的数放在了最后。 2.持续进行,直到所有的数都排序完。 3.优化:如果有一趟没有任何交换,说明已经排序完了。 for(int i=0;i<len;i++) for(int j=0;j<len-i-1;j++):此处- 阅读全文
posted @ 2021-05-05 13:51 wsZzz1997 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 思路: 1.从最后一个非叶子节点(len/2,len为当前树的长度)开始,将其与左右孩子比较,与较大的孩子交换。到根节点以后,最大(或者最小)的数已经在根了,与最后一个数交换,此时最后一个位置就已经排好了。 2.递归调用,长度-1(最后一个数排好了):sort(a,len-1); public cl 阅读全文
posted @ 2021-05-05 13:30 wsZzz1997 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 思路: 1.定义一个partition(这利用最简单的:数组的第一个数) 先从右往左找,找到第一个比partition小的数,放在low这个位置(由于此时low这个地方的数已经保存在partition中了,所以不会丢失) 然后从左往右找,找到第一个比partition大的数,将其放于high此时的位 阅读全文
posted @ 2021-05-05 13:18 wsZzz1997 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 算法思路: 归并:先"归"后"并" 1.核心思路:将两个有序的数组和并成一个 aux[]:存放临时的数据 merge(a,low,mid,high):将数组a从low到mid这一段,以及从mid+1到high这一段合并 定义两个指针i和j,i指向low,j指向mid+1,同时往后遍历,将较小的放在a 阅读全文
posted @ 2021-05-05 12:34 wsZzz1997 阅读(53) 评论(0) 推荐(0) 编辑
摘要: LeetCode1011.https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/ 暴力解法: 复杂写法,一次一次尝试,超时!!! // // 超时 // class Solution { // int[] s 阅读全文
posted @ 2021-04-27 16:19 wsZzz1997 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 思路: 刚开始理解错了题目:以为求每一层的节点个数,然后求最大值。 于是有了:所有层中的最大节点数(声明了一个class包含了每个节点的层数,然后用Deque 模拟队列进行一次层次遍历,每次插入新的节点时,将父节点的layer+1赋值给子节点,然后将当前层的节点数+1,这里用了一个数组layers记 阅读全文
posted @ 2021-04-25 18:51 wsZzz1997 阅读(71) 评论(0) 推荐(0) 编辑
摘要: final 和 String public static void main(String[] args) { String a1 = "a"; String a2 = "b"; // 非final串相加,指向堆中new的对象 String a3 = a1+a2; String a4 = "ab"; 阅读全文
posted @ 2021-04-23 11:05 wsZzz1997 阅读(44) 评论(0) 推荐(0) 编辑