05 2021 档案
摘要:1.走马灯 !为坏灯 相邻四个RGBY不重复 输入s RGBY!!! 输出 RGBY的个数 1 1 1 0 思路:遍历s,记录所有感叹号的位置存放起来,如果出现R则%5得到所有R的位置iR,同理得到GBY的位置iG,iB,iY 然后访问感叹号的位置index,将index%5,如果与iG,iB,iY
阅读全文
摘要:5.27 给出有向图: 找出最多跳过k步,从start节点到end节点的所有路径总数 /*现有n个火车站(2≤n≤50)用编号1~n表示,彼此之间的通车情况用字符串"a,b" 表示,如:"2,3" 表示有一条2号车站到3号车站的单程线路。现随意给出两个车站序号 x、y 和 最大途经中转站个数 k(0
阅读全文
摘要:leetcode1514. 概率最大的路径 首先考虑了dfs,1000节点超时,添加记忆化,5000节点超出空间。 邻接矩阵->邻接表(HashMap<node,HashMap>)解决空间问题 dfs仍然超时。 尝试bfs + 普通队列,结果存在误差:由于多次相乘,导致最终结果精度存在问题。 bfs
阅读全文
摘要:动态规划题: 出租车选单: 输入 1 2 3 3 开始时间 3 4 5 6 结束时间 200 150 180 210 每单的金钱 订单时间不能重合:例如,选了13 就不能选 24 ,但可以选3 5 或者 3 6 回溯思路:订单排序,按startTime,endTime 然后一次取出订单,选择接单或者
阅读全文
摘要:public class XieCheng2 { /** * 给定 n个岛屿的分数: x1 x2.. xn * m张牌: y1 y2.. ym * 每次前进 y1 * 问最高分数 */ public static void main(String[] args) { int n=4, m=2; in
阅读全文
摘要:剑指34: 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。 从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。 class Solution { /* 广度优先遍历 回溯 注意为负数的情况!! */ public List<List<Integer>> pathSu
阅读全文
摘要:题目 有一个长度为 arrLen 的数组,开始有一个指针在索引 0 处。 每一步操作中,你可以将指针向左或向右移动 1 步,或者停在原地(指针不能被移动到数组范围外)。 给你两个整数 steps 和 arrLen ,请你计算并返回:在恰好执行 steps 次操作以后,指针仍然指向索引 0 处的方案数
阅读全文
摘要: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:
阅读全文
摘要:给定一个n找到从1到n的全排列: 首先给定一个[] 第一层:可以放1 , 2 ,3 ,4 ... n 加入进入1,第二层可以放 2 ,3 ,4,5...n 。。。到达第n层即返回一个结果 1.定义一个used的数组:表示哪些数已经被使用了 boolean[] used = new boolean[n
阅读全文
摘要:思路: 1.i从0开始,j从i+1开始,j往前比较如果比他大(小)交换,直到不能交换为止,说明找到了插入位置,一次遍历完成。 public class InsertSort { // 直接插入排序: // 将当前数插入到已有的数组中,使之有序: // j从i+1开始往前直到找到一个比他大(小)的数为
阅读全文
摘要:思路: 1.每一趟,交换相邻两个数,前一个数大的(小的)往后放,一趟下来,最大(小)的数放在了最后。 2.持续进行,直到所有的数都排序完。 3.优化:如果有一趟没有任何交换,说明已经排序完了。 for(int i=0;i<len;i++) for(int j=0;j<len-i-1;j++):此处-
阅读全文
摘要:思路: 1.从最后一个非叶子节点(len/2,len为当前树的长度)开始,将其与左右孩子比较,与较大的孩子交换。到根节点以后,最大(或者最小)的数已经在根了,与最后一个数交换,此时最后一个位置就已经排好了。 2.递归调用,长度-1(最后一个数排好了):sort(a,len-1); public cl
阅读全文
摘要:思路: 1.定义一个partition(这利用最简单的:数组的第一个数) 先从右往左找,找到第一个比partition小的数,放在low这个位置(由于此时low这个地方的数已经保存在partition中了,所以不会丢失) 然后从左往右找,找到第一个比partition大的数,将其放于high此时的位
阅读全文
摘要:算法思路: 归并:先"归"后"并" 1.核心思路:将两个有序的数组和并成一个 aux[]:存放临时的数据 merge(a,low,mid,high):将数组a从low到mid这一段,以及从mid+1到high这一段合并 定义两个指针i和j,i指向low,j指向mid+1,同时往后遍历,将较小的放在a
阅读全文

浙公网安备 33010602011771号