摘要: 目标和(LeetCode 494 难度:中等) 下面用目标和来对比动态规划和回溯 回溯思路 任何框架的核心思想都是穷举,回溯算法是一个暴力穷举,前面写过算法框架: result = [] def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) retur 阅读全文
posted @ 2021-07-16 22:50 宋佳强 阅读(767) 评论(0) 推荐(0) 编辑
摘要: 一、GC的分类与性能指标 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器,可以将GC分为不同的类型。 Java不同版本新特性 语法层面:Lambda表达式、 阅读全文
posted @ 2021-07-16 16:34 宋佳强 阅读(105) 评论(0) 推荐(1) 编辑
摘要: 打家劫舍I(LeetCode 198题 难度:中等) 题目很容易理解,而且动态规划的特征很明显。,解决动态规划问题就是找「状态」和「选择」,仅此而已。 假想你就是这个专业强盗,从左到右走过这一排房子,在每间房子前都有两种选择:抢或者不抢。 如果你抢了这间房子,那么你肯定不能抢相邻的下一间房子了,只能 阅读全文
posted @ 2021-07-16 12:15 宋佳强 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 零钱兑换②(LeetCode 518题 难度:中等) 我们可以把这个问题转化为背包问题的描述形式: 有一个背包,最大容量为amount,有一系列物品coins,每个物品的重量为coins[i],每个物品的数量无限。请问有多少种方法,能够把背包恰好装满? 这个问题和我们前面讲过的两个背包问题,有一个最 阅读全文
posted @ 2021-07-16 12:13 宋佳强 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 子集切分问题(LeetCode 416 难度:中等) 描述 对于这个问题,看起来和背包没有任何关系,为什么说它是背包问题呢? 首先回忆一下背包问题大致的描述是什么: 给你一个可装载重量为W的背包和N个物品,每个物品有重量和价值两个属性。其中第i个物品的重量为wt[i],价值为val[i],现在让你用 阅读全文
posted @ 2021-07-16 12:12 宋佳强 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 经典0-1背包问题 0-1背包问题 给你一个可装载重量为W的背包和N个物品,每个物品有重量和价值两个属性,其中第i个物品的重量为wt[i],价值为val[i],现在你用这个背包装物品,问最多能装的价值是多少 思路分析 这个题目中的物品不可以分割,要么装进包里,要么不装,不能说切成两块装一半。这也许就 阅读全文
posted @ 2021-07-16 12:10 宋佳强 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 戳气球(LeetCode 312题 难度:困难) 题目中说 nums[0]=nums[n]=1; 动态规划思路: int n=nums.length; int point[]=new int[n+2]; int m=point.length; point[0]=point[n+1]=1; for ( 阅读全文
posted @ 2021-07-16 12:09 宋佳强 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 动态规划问题:高楼扔鸡蛋 力扣 887 题 难度:困难 思路分析: 题目是这样: 你面前有一栋从 1 到N共N层的楼,然后给你K个鸡蛋(K至少为 1)。现在确定这栋楼存在楼层0 <= F <= N,在这层楼将鸡蛋扔下去,鸡蛋恰好没摔碎(高于F的楼层都会碎,低于F的楼层都不会碎)。现在问你,最坏情况下 阅读全文
posted @ 2021-07-16 12:07 宋佳强 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 一、System.gc()的理解 在默认情况下,通过System.gc()或者Runtime.getRuntime().gc()的调用, 会显示触发 Full gc,同时对老年代和新生代进行垃圾回收,尝试去释放被丢弃对象占用的空间。 然而System.gc()附带一个免责声明,无法保证垃圾收集器的调 阅读全文
posted @ 2021-07-16 12:05 宋佳强 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 一、标记阶段:引用计数算法 1.1 垃圾标记阶段:垃圾存活判断 答:只有被标记为已经死亡的对象(没有任何指针指向它),GC才会在执行垃圾回收时,释放掉其所占的空间,因此这个过程叫做 垃圾标记阶段 两种方式:引用计数算法和可达性分析算法 1.2 引用计数算法:记录对象被引用的情况,被引用就+1,引用失 阅读全文
posted @ 2021-07-16 12:02 宋佳强 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 一、什么是垃圾 在程序运行当中,没有任何指针指向的对象,这个对象就是垃圾 哪些内存你需要回收? 什么时候回收? 如何回收? 二、为什么要GC 三、早期垃圾回收 四、java垃圾回收机制 内存的自动分配和垃圾自动回收,虽然不用咱们管,但是也要了解,不要过度依赖 五、大厂面试题 阅读全文
posted @ 2021-07-16 12:00 宋佳强 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 一、String的基本特性 String str="hello"; String str=new Stirng("hello"); String 被final 修饰,不可被继承,底层(1.8), char[] jdk9是byte[]+标识 放在字符串常量池(hash、数组+链表),在堆中1.8 二、 阅读全文
posted @ 2021-07-16 11:59 宋佳强 阅读(57) 评论(0) 推荐(0) 编辑