
内功心法--九阳神功
leetcode刷题
写bug时长三年
hi,大家好。我是写bug时长两年半程序猿。我会写bug,改bug,批量生产bug,批量维修bug。
展开
-
判断多少灯泡还亮着
灯泡开关问题:问题和示例:我的思路:public class BulbSwitch { public static void main(String[] args) { BulbSwitch bulbSwitch = new BulbSwitch(); System.out.println(bulbSwitch.mySolution(16)...原创 2019-08-27 15:31:29 · 216 阅读 · 0 评论 -
判断是否是3的幂次方
题目: 给定一个整数,写一个函数来判断它是否是 3的幂次方循环写法: public boolean isPowerOf3(int n) { if (n == 1) return true; while (n > 3 && n % 3 == 0) { n = n / 3; } ...原创 2019-08-27 16:24:46 · 4600 阅读 · 0 评论 -
判断是否是2的幂次方
题目:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。我的解法:那必然是 循环,递归,暴力枚举。。(滑稽.jpg)神仙解法:满足2的次幂 -- 联想到2进制中满足2的次方的 都是最高位为1 其他位为0因此 2^n & 2^n-1 == 0 public boolean isPowerOf2(int n) { return n > 0 ...原创 2019-08-27 16:40:06 · 570 阅读 · 0 评论 -
阶乘结果尾数0的数量
题目: 给定一个整数n,返回n! 结果尾数中零的数量。0 的产生? == 2和5 也就是判断阶乘的数里有多少对 2 和 5 (2个个数肯定大于5的个数)因此考虑阶乘数的组成里有多少个5也就是把阶乘里数全部分解成因子形式后还有多少个5public int trailingZeroes (int n){ return n == 0 ? 0 : n/5 + trailin...原创 2019-08-27 17:56:07 · 298 阅读 · 0 评论 -
拿石头的策略游戏
题目: 你和你的朋友,两个人一起玩Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。策略游戏胜利的条件条件 1: 假设对方先手,如果石头个数满足( 4 = 最少 + 最多)* N 则你必定是赢家;(ps : ...原创 2019-08-27 18:09:22 · 842 阅读 · 0 评论 -
动态规划拦截导弹问题
类似于最长递减子序列: public int interceptorMissle(int[] missle) { int[] dp = new int[missle.length]; Arrays.fill(dp, 1); int max = 1; for (int i = 0; i < dp.length; i...原创 2019-08-30 10:54:35 · 301 阅读 · 0 评论 -
最长递增子序列
类似于前面的导弹发射问题 == 求最长递减子序列 这里的问题 == 最长递增子序列 public int theLongestDecSubOrder(int[] array) { int[] dp = new int[array.length]; Arrays.fill(dp, 1); int max = 1; ...原创 2019-08-30 11:45:17 · 227 阅读 · 0 评论 -
快速排序里层while循环一定要从右边开始?
如果使用递归实现快速排序。涉及到选取基数和两层while循环如下是选取基数为左边。则里层while循环应该右边先开始int target = nums[left];while(start<end){ while(left<right && nums[end]>target){ end--; } while(left<right...原创 2019-09-10 10:21:07 · 709 阅读 · 0 评论