五月一日:690.员工的重要性 发现用哈希表做的还是不熟,看了一下普通递归思路,这个比较好理解。这段时间看完设计模式和sql,就去看剑指offer,容器还是用少了,不太熟。
题目:https://leetcode-cn.com/problems/employee-importance/
参考:https://leetcode-cn.com/problems/employee-importance/solution/java-di-gui-by-jonnyhuang-kcyy/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 class Solution { int sum=0 ; public int getImportance (List<Employee> employees, int id) { for (Employee e : employees){ if (e.id==id){ sum += e.importance; for (int i : e.subordinates){ getImportance(employees,i); } } } return sum; } }
五月二日:554.砖墙 今天还是学习官方解答思路,哈希做少了,确实自己看到题后没啥想法。
题目:https://leetcode-cn.com/problems/brick-wall/
参考:https://leetcode-cn.com/problems/brick-wall/solution/zhuan-qiang-by-leetcode-solution-2kls/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Solution { public int leastBricks (List<List<Integer>> wall) { Map<Integer,Integer> map = new HashMap<Integer,Integer>(); for (List<Integer> list : wall){ int len=list.size(); int sum=0 ; for (int i=0 ;i<len-1 ;i++){ sum += list.get(i); map.put(sum, map.getOrDefault(sum,0 )+1 ); } } int max_count=0 ; for (Map.Entry<Integer,Integer> entry : map.entrySet()){ max_count = Math.max(max_count,entry.getValue()); } return wall.size()-max_count; } }
五月三日:7.整数反转 我看到题后想到的就是转成字符串,然后倒序输出,然后写着写着就发现卡住了,原因是我还只会将int存入string然后反向遍历,后来查了下StringBuild的reverce()函数便可实现反转,String、StringBuffer、StringBuilder这里面后两个我还是关注少了。绕了一圈还是去看了三叶姐的题解,好家伙直接数学思维搞定,我还是太菜了完全没想到😭。
题目:https://leetcode-cn.com/problems/reverse-integer/
参考:https://leetcode-cn.com/problems/reverse-integer/solution/gong-shui-san-xie-yi-ti-shuang-jie-bu-wa-3cuj/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 class Solution { public int reverse (int x) { int res=0 ; while (x!=0 ){ if (res>0 && res > (Integer.MAX_VALUE-(x%10 ))/10 ) return 0 ; if (res<0 && res < (Integer.MIN_VALUE-(x%10 ))/10 ) return 0 ; res = res*10 + x%10 ; x/=10 ; } return res; } } class Solution { public int reverse (int x) { long res=0 ; while (x!=0 ){ res = res*10 + x%10 ; x/=10 ; } return (int )res = res ? (int )res : 0 ; } }
五月四日:1473.粉刷房子 3 今天直接瘫了,困难真顶不住,为了拿章子就ctrl v了。。。。。
参考:https://leetcode-cn.com/problems/paint-house-iii/solution/fen-shua-fang-zi-iii-by-leetcode-solutio-powb/
五月五日:740.删除并获得点数 今天题目用到dp。。。。。只能看懂题意,自行分析了但没法写。
参考:https://leetcode-cn.com/problems/delete-and-earn/solution/gong-shui-san-xie-zhuan-huan-wei-xu-lie-6c9t0/
五月六日:1720.解码异或后的数组 太简单了,那今天就补充一下异或相关的应用。
题目:https://leetcode-cn.com/problems/decode-xored-array/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class Solution { public int [] decode(int [] encoded, int first) { int n=encoded.length; int [] arr = new int [n+1 ]; arr[0 ]=first; for (int i=0 ;i<n;i++){ arr[i+1 ] = encoded[i] ^ arr[i]; } return arr; } }
异或:异或是按位运算符,即先将数据转换为二进制,然后在对每一位进行计算,其中同0、同1为0,01相异为1。
1 2 3 4 5 6 7 8 9 10 11 12 0 ^0 =1 ^1 =0 0 ^1 =1 ^0 =1 一般运用: a^a=0 ; a^0 =a; a^b=b^a; a^b^b=a; 以后写ab两数交换也可换成异或来写: a=a^b; b=a^b; a=a^b;
五月七日:1486.数组异或操作 简单没啥说的。
题目:https://leetcode-cn.com/problems/xor-operation-in-an-array/
1 2 3 4 5 6 7 8 9 10 class Solution { public int xorOperation (int n, int start) { int [] nums = new int [n]; int res=0 ; for (int i=0 ;i<n;i++){ res^=start + 2 *i; } return res; } }
五月八日:1723.完成所有工作的最短时间 困难直接爬了,贴一个宫水姐姐的题解。。。
参考:https://leetcode-cn.com/problems/find-minimum-time-to-finish-all-jobs/solution/gong-shui-san-xie-yi-ti-shuang-jie-jian-4epdd/
五月九日:1482.制作m束花所需的最少天数 ???怎么又难回去了
参考:https://leetcode-cn.com/problems/minimum-number-of-days-to-make-m-bouquets/solution/xiao-ming-chong-hua-by-xiaohu9527-5jf6/
五月十日:872.叶子相似的树 看到题感觉很简单,中序遍历记下叶子结点,然后在判断两个树的叶子结点是否相同即可,结果写好后半天跑不出来。对着三叶大佬改正了一下错误。
题目:https://leetcode-cn.com/problems/leaf-similar-trees/
参考:https://leetcode-cn.com/problems/leaf-similar-trees/solution/gong-shui-san-xie-yi-ti-shuang-jie-di-gu-udfc/
修改前
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 class Solution { List<Integer> list1 = new ArrayList<Integer>(); List<Integer> list2 = new ArrayList<Integer>(); public boolean leafSimilar (TreeNode root1, TreeNode root2) { inorder1(root1); inorder2(root2); if (list1 == list2) return true ; return false ; } void inorder1 (TreeNode root) { if (root == null ) return ; inorder1(root.left); if ((root.left == null ) && (root.right == null )) list1.add(root.val); inorder1(root.right); } void inorder2 (TreeNode root) { if (root == null ) return ; inorder2(root.left); if ((root.left == null ) && (root.right == null )) list2.add(root.val); inorder2(root.right); } }
修改后
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 class Solution { List<Integer> list1 = new ArrayList<>(); List<Integer> list2 = new ArrayList<>(); public boolean leafSimilar (TreeNode root1, TreeNode root2) { inorder(root1,list1); inorder(root2,list2); if (list1.size() == list2.size()){ for (int i=0 ;i<list1.size();i++){ if (!list1.get(i).equals(list2.get(i))) return false ; } return true ; } return false ; } void inorder (TreeNode root,List<Integer> list) { if (root == null ) return ; if (root.left == null && root.right == null ) { list.add(root.val); return ; } inorder(root.left,list); inorder(root.right,list); } }
今日小结:
root.left && root.right == null 其中&&不能连接两个树结点。 正确写法:root.left == null && root.right == null
inorder方法用于多个表时,可加入list参数,要学会灵活使用语言。
两个list判断相等,要用循环判断,不能直接判断。
五月十一日:1734.解码异或后的排序 说实话题意没解释清除,看了一下别人的分析才明白,其实算是一个数学题。
题目:https://leetcode-cn.com/problems/decode-xored-permutation/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 class Solution { public int [] decode(int [] encoded) { int n = encoded.length; int [] perm = new int [n+1 ]; int perm_sum=0 ,encoded_sum=0 ; for (int i=1 ;i<=n+1 ;i++){ perm_sum^=i; } for (int i=1 ;i<n;i+=2 ){ encoded_sum^=encoded[i]; } perm[0 ] = perm_sum^encoded_sum; for (int i=0 ;i<n;i++){ perm[i+1 ] = perm[i] ^ encoded[i]; } return perm; } }
五月十二日:1310.子数组异或查询 简单题,双循环秒了😂。
看了下三叶的题解,有种方法运用了异或的技巧(前缀和),很巧妙的使时间复杂度到了O(n+len)。
使用前缀和直接2ms,双循环700ms左右。
题目:https://leetcode-cn.com/problems/xor-queries-of-a-subarray/
优化参考:https://leetcode-cn.com/problems/xor-queries-of-a-subarray/solution/gong-shui-san-xie-yi-ti-shuang-jie-shu-z-rcgu/
暴力破解:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class Solution { public int [] xorQueries(int [] arr, int [][] queries) { int len = queries.length; int [] ans = new int [len]; for (int i=0 ;i<len;i++){ int start = queries[i][0 ]; int end = queries[i][1 ]; int res = 0 ; for (int k=start;k<=end;k++){ res ^= arr[k]; } ans[i] = res; } return ans; } }
优化(前缀和):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 class Solution { public int [] xorQueries(int [] arr, int [][] queries) { int len = queries.length; int n = arr.length; int [] sum = new int [n+1 ]; int [] ans = new int [len]; for (int i=1 ;i<=n;i++) sum[i] = sum[i-1 ]^arr[i-1 ]; for (int i=0 ;i<len;i++){ int start = queries[i][0 ]+1 ; int end = queries[i][1 ]+1 ; ans[i] = sum[start-1 ] ^ sum[end]; } return ans; } }
五月十三日:1269.停在原地的方案数 动态规划找个时间好好看看,现在遇到dp就倒了。
参考: https://leetcode-cn.com/problems/number-of-ways-to-stay-in-the-same-place-after-some-steps/solution/gong-shui-san-xie-xiang-jie-xian-xing-dp-m9q9/
五月十四日:12.整数转罗马数字 题目:https://leetcode-cn.com/problems/integer-to-roman/
优化参考:https://leetcode-cn.com/problems/integer-to-roman/solution/gong-shui-san-xie-12-zheng-shu-zhuan-luo-b9kw/
普通写法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 class Solution { public String intToRoman (int num) { int K = num/1000 ; num = num%1000 ; int H = num/100 ; num = num%100 ; int TEN = num/10 ; int IND = num%10 ; String ans = "" ; for (int i=0 ;i<K;i++) ans += "M" ; if (H==9 ) ans += "CM" ; else if (H<9 && H>=5 ){ ans += "D" ; for (int i=0 ;i<H-5 ;i++) ans += "C" ; } else if (H==4 ) ans += "CD" ; else if (H<4 ) for (int i=0 ;i<H;i++) ans += "C" ; if (TEN==9 ) ans += "XC" ; else if (TEN<9 && TEN>=5 ){ ans += "L" ; for (int i=0 ;i<TEN-5 ;i++) ans += "X" ; } else if (TEN==4 ) ans += "XL" ; else if (TEN<4 ) for (int i=0 ;i<TEN;i++) ans += "X" ; if (IND==9 ) ans += "IX" ; else if (IND<9 && IND>=5 ){ ans += "V" ; for (int i=0 ;i<IND-5 ;i++) ans += "I" ; } else if (IND==4 ) ans += "IV" ; else if (IND<4 ) for (int i=0 ;i<IND;i++) ans += "I" ; return ans; } }
五月十五日:13.罗马数字转整数 有思路但数据存放不知道用什么,看了下评论区便学习使用了哈希表。
题目:https://leetcode-cn.com/problems/roman-to-integer/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 class Solution { public int romanToInt (String s) { int sum=0 ; Map<Character,Integer> map = new HashMap<Character,Integer>(); map.put('I' ,1 ); map.put('V' ,5 ); map.put('X' ,10 ); map.put('L' ,50 ); map.put('C' ,100 ); map.put('D' ,500 ); map.put('M' ,1000 ); char [] n = s.toCharArray(); for (int i=0 ;i<n.length;i++){ if (i<n.length-1 && map.get(n[i])<map.get(n[i+1 ]) ) sum -= map.get(n[i]); else sum += map.get(n[i]); } return sum; } }
五月十六日:421.数组中两个数的最大异或值 暴力破解在超时的边缘摩擦。。。代码太丢人不贴了。
题目:https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/
五月十七日:993.二叉树的堂兄弟结点 这题真的有思路,就是写着写着就来了点小问题,还在那想着用list😭。跟着评论区打了一遍。发现思路没问题,但是使用什么方法出了点岔子。。。
题目:https://leetcode-cn.com/problems/cousins-in-binary-tree/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 class Solution { int x_fa,y_fa,x_dep,y_dep; public boolean isCousins (TreeNode root, int x, int y) { inorder(root.left,root.val,1 ,x,y); inorder(root.right,root.val,1 ,x,y); return x_fa!=y_fa && x_dep==y_dep; } void inorder (TreeNode root, int father, int depth, int x, int y) { if (root==null ) return ; if (root.val == x){ x_fa=father; x_dep=depth; }else if (root.val == y){ y_fa=father; y_dep=depth; }else { inorder(root.left,root.val,depth+1 ,x,y); inorder(root.right,root.val,depth+1 ,x,y); } } }
五月十八日:1442.形成两个异或相等数组的三元组数目 今天还是有向前缀和的方法靠,然后发现有些细节没想清除。看完题解后发现评论区还有针对异或特性的优化,属实把异或玩明白了。
题目:https://leetcode-cn.com/problems/count-triplets-that-can-form-two-arrays-of-equal-xor/
参考(评论区有优化):https://leetcode-cn.com/problems/count-triplets-that-can-form-two-arrays-of-equal-xor/solution/gong-shui-san-xie-xiang-jie-shi-yong-qia-7gzm/
基础写法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Solution { public int countTriplets (int [] arr) { int n=arr.length; int [] sum = new int [n+1 ]; for (int i=1 ;i<=n;i++) sum[i]=sum[i-1 ] ^ arr[i-1 ]; int ans = 0 ; for (int i=1 ;i<=n;i++){ for (int j=i+1 ;j<=n;j++){ for (int k=j;k<=n;k++){ int a=sum[i-1 ] ^ sum[j-1 ]; int b=sum[j-1 ] ^ sum[k]; if (a==b) ans++; } } } return ans; } }
异或特性优化:
sum[i-1] ^ sum[j-1]是 i到j-1的异或和;sum[j-1] ^ sum[k]是 j-1到k的异或和
注意前一个都是n-1,因为前缀和的特性想有n的值,要使用n-1的异或和来算,然后又a==b
sum[i-1] ^ sum[j-1]==sum[j-1] ^ sum[k]
sum[i-1] ^ sum[j-1] ^ (sum[j-1] ^ sum[k]) == sum[j-1] ^ sum[k] ^ (sum[j-1] ^ sum[k])
sum[i-1] ^ sum[k] == 0,即i~k的异或和
所以便可转化为求 i到k异或和,然后要注意,每次判定 i到k的异或和==0,而此时的j可以取i<j<=k中的任一个数,所以j有k-i种取法,所以每次循环统计三元组时要+(k-i),而非+1。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 class Solution { public int countTriplets (int [] arr) { int ans=0 ; for (int i=0 ;i<arr.length;i++){ int sum=0 ; for (int k=i;k<arr.length;k++){ sum^=arr[k]; if (sum==0 ) ans+=(k-i); } } return ans; } }
五月十九日:1738.找出第K大的异或坐标值 看了题解用比较暴力的方法做出来了。这次题解有图讲的很清楚。
题目:https://leetcode-cn.com/problems/find-kth-largest-xor-coordinate-value/
参考:https://leetcode-cn.com/problems/find-kth-largest-xor-coordinate-value/solution/xin-shou-pian-qian-ru-shen-chu-xi-lie-er-uwny/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 class Solution { public int kthLargestValue (int [][] matrix, int k) { int n = matrix.length,m=matrix[0 ].length; for (int i=0 ;i<n;i++){ for (int j=1 ;j<m;j++){ matrix[i][j] ^= matrix[i][j-1 ]; } } for (int j=0 ;j<m;j++){ for (int i=1 ;i<n;i++){ matrix[i][j] ^= matrix[i-1 ][j]; } } int [] num = new int [m*n]; int a=0 ; for (int i=0 ;i<n;i++){ for (int j=0 ;j<m;j++){ num[a]=matrix[i][j]; a++; } } Arrays.sort(num); int ans = m*n+1 -k; return num[ans-1 ]; } }
五月二十日:692.前K给高频单词 今天直接g了。。。。。
参考:https://leetcode-cn.com/problems/top-k-frequent-words/solution/qian-kge-gao-pin-dan-ci-by-leetcode-solu-3qk0/
五月二十一日:1035.不相交的线(今日两题) 今天算是给动态规划开荒了,看了题解的建议便先去学了一下最长公共子序列,分析果然是一个类型的,这题甚至都不用改公共子序列的代码。
最长公共子序列我另开一篇经典算法题。
题目:https://leetcode-cn.com/problems/uncrossed-lines/
参考:https://leetcode-cn.com/problems/uncrossed-lines/solution/bu-xiang-jiao-de-xian-by-leetcode-soluti-6tqz/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Solution { public int maxUncrossedLines (int [] nums1, int [] nums2) { int n=nums1.length,m=nums2.length; int [][] f=new int [n+1 ][m+1 ]; for (int i=1 ;i<n+1 ;i++){ for (int j=1 ;j<m+1 ;j++){ if (nums1[i-1 ] == nums2[j-1 ]) f[i][j]=f[i-1 ][j-1 ]+1 ; else f[i][j]=Math.max(f[i-1 ][j],f[i][j-1 ]); } } return f[n][m]; } }
五月二十二日:810.黑板异或游戏 妥妥的数学思维题。 解题关键是理解啥情况下A会赢,注意A是先手。
1、A是先手,若数组最初异或和=0,A直接赢,此时和奇偶无关。所以后续不再讨论初始异或和=0的情况
2、数组为偶数A必赢,也就是先手偶数必赢: 因为异或特性,两个相同数异或=0,所以当数组为偶数时,必有偶数个数不同(假设有两个不同数x、y),此时A先手拿一个不同数x,数组变为奇数,B若拿y则A赢(下一轮到A时异或和=0),所以B不会拿y而是拿其他成对的相同数,A随后也会拿成对的相同数,相同数会一对对的消失,到最后只会剩下一个y留给B拿。
3、数组为奇数,A必输,除非一开局异或和=0。
综上:A先手,数组=偶数必赢;数组=奇数必输,除了开局异或和=0。
1 2 3 4 5 6 7 8 class Solution { public boolean xorGame (int [] nums) { int n=nums.length,sum=0 ; if (n%2 == 0 ) return true ; for (int x : nums) sum^=x; return sum == 0 ; } }
五月二十三日:1707.与数组中元素的最大异或值 shit,说是要前缀树基础就先去学了前缀树(第208题),回来发现还是不会。。
构造前缀树就写经典算法里面了。早上周赛还忘了,剩9分钟才上去做第一题结果,做完发现已经结束了。。。
参考:https://leetcode-cn.com/problems/maximum-xor-with-an-element-from-array/solution/gong-shui-san-xie-jie-zhe-ge-wen-ti-lai-lypqr/
五月二十四日:664.奇怪的打印机 连续三天困难。。。。。不过今天的勉强看懂了。看的官方题解,主要还是动态规划倒推思路。三叶姐姐的题解今天硬是没看懂😥
题目:https://leetcode-cn.com/problems/strange-printer/
参考:https://leetcode-cn.com/problems/strange-printer/solution/qi-guai-de-da-yin-ji-by-leetcode-solutio-ogbu/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 class Solution { public int strangePrinter (String s) { int n=s.length(); int [][] f=new int [n+1 ][n+1 ]; for (int l=n-1 ;l>=0 ;l--){ f[l][l]=1 ; for (int r=l+1 ;r<n;r++){ if (s.charAt(l) == s.charAt(r)) f[l][r]=f[l][r-1 ]; else { int min=Integer.MAX_VALUE; for (int k=l;k<r;k++) min=Math.min(min,f[l][k]+f[k+1 ][r]); f[l][r]=min; } } } return f[0 ][n-1 ]; } }
五月二十五日:1787.使所有区间的异或结果为零 简单、中等题呢?给人整麻了,高情商:今天不用看算法,可以直接去学自己的东西了。
五月二十六日:1190.反转每对括号间的子串 只能说用栈很好做,就懒得优化了(其实是不会),栈画个过程图然后对着写就行。就是栈的相关方法没怎么用,要查一下,今天做完应该也记住了。
题目:https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 class Solution { public String reverseParentheses (String s) { Stack<Character> stack = new Stack<Character>(); for (char c : s.toCharArray()){ if ( c == ')' ){ StringBuilder sb = new StringBuilder(); while (stack.peek() != '(' ){ sb.append(stack.pop()); } stack.pop(); for (char c1 : sb.toString().toCharArray()) stack.push(c1); }else stack.push(c); } StringBuilder ans = new StringBuilder(); while (!stack.empty()) ans.append(stack.pop()); return ans.reverse().toString(); } }
五月二十七日:461.汉明距离 做了这么久的异或,看到二进制相关就想到异或😂
题目:https://leetcode-cn.com/problems/hamming-distance/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Solution { public int hammingDistance (int x, int y) { int num = x^y,ans=0 ; while (num!=0 ){ ans += num&1 ; num >>= 1 ; } return ans; } }
五月二十八日:477.汉明距离总和 有点巧妙,用二进制对每一位进行统计+组合。
题目:https://leetcode-cn.com/problems/total-hamming-distance/
参考:
(图,好理解)https://leetcode-cn.com/problems/total-hamming-distance/solution/hua-tu-jie-ti-by-cyingenohalt-yy9j/
https://leetcode-cn.com/problems/total-hamming-distance/solution/yi-ming-ju-chi-zong-he-by-leetcode-solut-t0ev/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 class Solution { public int totalHammingDistance (int [] nums) { int sum=0 ,m=nums.length; for (int i=0 ;i<30 ;i++){ int n=0 ; for (int num : nums) n += (num >> i) & 1 ; sum += n*(m-n); } return sum; } }
五月二十九日:1074.元素和为目标的子矩阵数量 今天直接跑了。
参考:https://leetcode-cn.com/problems/number-of-submatrices-that-sum-to-target/solution/gong-shui-san-xie-you-hua-mei-ju-de-ji-b-uttw/
五月三十日:231.2的幂 今日简单题。。。进阶做法懒得看了,周赛心累,真的菜啊。。。
参考:https://leetcode-cn.com/problems/power-of-two/solution/gong-shui-san-xie-2-de-mi-by-ac_oier-qm6e/
1 2 3 4 5 6 7 class Solution { public boolean isPowerOfTwo (int n) { if (n<=0 ) return false ; while (n%2 == 0 ) n/=2 ; return n==1 ; } }
五月三十一日:342.4的幂 和昨天做的题差不多,用的常规方法。5月勋章到手😁
题目:https://leetcode-cn.com/problems/power-of-four/
1 2 3 4 5 6 7 class Solution { public boolean isPowerOfFour (int n) { if (n<=0 ) return false ; while (n%4 == 0 ) n/=4 ; return n==1 ; } }
小结 5月完了,6月冲,剑指offer得提上日程了。