随笔分类 - 算法题
1
笔试题仅提供大概题目和思路,可能记忆模糊,没有验证可能有误!!
摘要:笔试3道 1.找数组中只出现1次的数字,按原顺序(其他都出现了两次) 2.求指定长度最大子数组的和、起始位置 3.简单求概率题(不记得了) 9.16一面30-40多分钟 项目经历、实习经历、简单八股文(java基础、mysql、redis数据结构、网络) 9.17二面50分钟 项目经历、实习经历、八
阅读全文
摘要:1.种树问题:贪心算法 共n*1行,其中Y表示没种,B表示已经种了,求最大还能种几棵树 YYY:2棵 2.平底锅:数学 6*6从一个角度射入,可以反弹三次,计算能够存活的角度的tan值 3.最大顺序子序列:最小栈 156327 三位则是567,四位是5637,五位是56327 定义一个定长栈,每次插
阅读全文
摘要: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开始往前直到找到一个比他大(小)的数为
阅读全文
摘要:LeetCode1011.https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/ 暴力解法: 复杂写法,一次一次尝试,超时!!! // // 超时 // class Solution { // int[] s
阅读全文
摘要:思路: 刚开始理解错了题目:以为求每一层的节点个数,然后求最大值。 于是有了:所有层中的最大节点数(声明了一个class包含了每个节点的层数,然后用Deque 模拟队列进行一次层次遍历,每次插入新的节点时,将父节点的layer+1赋值给子节点,然后将当前层的节点数+1,这里用了一个数组layers记
阅读全文
摘要:选择题 算法题 1.括号匹配问题: 给定字符串s,s只包含 '[' '{' '(' ')' '}' ']' 六种字符 判断s的是否合法。 类似这种 s="[{]}"不合法 思路:遇到左括号入栈,遇到右括号则出栈, 判断出栈的左括号,与当前的右括号是否匹配? 匹配则继续直到结束,字符串遍历完了就返回t
阅读全文
摘要:有多个岛屿,数量为N,例如呈直线排列 [0 5, 8 6, 10 8, 18 6, 22 5]。前面为距离第0个岛的距离,后面为当前岛的金币数 我们的热气球每次能飞M千米,我们只能起飞K次 最开始我们在0号岛屿上,问:获得金币最多的数量是多少? N=5, M=10, K=2。 输入: 5 10 2
阅读全文
摘要:假设有一组气球,[1 2 3] 每次能发射两颗子弹,每颗子弹可能射中,也可能射不中。 射中1个气球时得分为当前气球得分,射中2个气球时,得分为:分数1|分数2,射中0个得分0。 问所有可能的得分情况之和。 思路:分两种情况,只中一颗子弹的情况;中两颗子弹的情况。 1.中一颗,所有得分之和 2.中两颗
阅读全文
摘要:三、求一个数组中子数组所有数之和最大,且为6的倍数的数组的最大和 (数字1-10000) (数组长度0-100000) 输入: [1 2 3 4 5 6] 6 输出: 18 import java.util.Scanner; public class Wangyi_exam3 { /** * 最多一
阅读全文
摘要:二、最长摇摆子数组长度 连续递增两次或者连续递减两次都算作摇摆。 连续递增两次以后必须递减,否则中断摇摆。 必须有两次递增递减才算完整的摇摆。 12321 这就是一次完整的摇摆 12322 只完成了递增,没有完成递减所以中断了 输入: 1 2 3 2 1 5 输出: 5 输入: 1 2 3 2 2
阅读全文
摘要:一、二叉树的最好路径 找到从根到某个节点的路径长度为目标长的最短的路径, 多条则输入最短最左边那条。 输入: 二叉树和目标(空节点为null) [3,1,5,2,4,4,1] 8 3 1 5 2 4 4 1 输出 [3,5](不是[3,1,4]) import java.util.*; public
阅读全文
1

浙公网安备 33010602011771号