leetcode 简单题合集(Java版)
326. 3的幂
https://leetcode-cn.com/problems/power-of-three/
题解:
class Solution {public boolean isPowerOfThree(int n) {if (n == 0) return false;while (n != 1) {if (n % 3 != 0) return false;else n /= 3;}return true;}
}
327. 4的幂
https://leetcode-cn.com/problems/power-of-four/
题解:
class Solution {public boolean isPowerOfFour(int n) {if (n == 0) return false;while (n != 1) {if (n % 4 != 0) return false;else n /= 4;}return true;}
}
344. 反转字符串
https://leetcode-cn.com/problems/reverse-string/
class Solution {public void reverseString(char[] s) {for (int i = 0; i < s.length / 2; i++) {char t = s[i];s[i] = s[s.length - i - 1];s[s.length - i - 1] = t;}}
}
345. 反转字符串中的元音字母
https://leetcode-cn.com/problems/reverse-vowels-of-a-string/
class Solution {public static void main(String[] args) {reverseVowels("hello");}public static String reverseVowels(String s) {char[] arr = s.toCharArray();int left = 0, right = arr.length - 1;while (left < right) {while (left < arr.length && !isVowel(arr[left])) {left++;}while (right >= 0 && !isVowel(arr[right])) {right--;}if (left >= right) break;char temp = arr[left];arr[left] = arr[right];arr[right] = temp;left++;right--;}StringBuilder sb = new StringBuilder();for (int i = 0; i < arr.length; i++) {sb.append(arr[i]);}return sb.toString();}public static boolean isVowel(char c) {return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U');}
}
349. 两个数组的交集
https://leetcode-cn.com/problems/intersection-of-two-arrays/
public class Solution {public int[] intersection(int[] nums1, int[] nums2) {HashSet<Integer> set = new HashSet<>();ArrayList<Integer> list = new ArrayList<>();for (int i = 0; i < nums1.length; i++) {set.add(nums1[i]);}for (int i = 0; i < nums2.length; i++) {if (set.remove(nums2[i])) {list.add(nums2[i]);}}int[] res = new int[list.size()];for (int i = 0; i < list.size(); i++) {res[i] = list.get(i);}return res;}
}
350. 两个数组的交集 II
https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/comments/
思路:HashMap存原始个数,遇到相同就减1并输出
class Solution {public int[] intersect(int[] nums1, int[] nums2) {HashMap<Integer, Integer> map = new HashMap();ArrayList<Integer> list = new ArrayList<>();for (int i = 0; i < nums1.length; i++) {Integer cnt = map.get(nums1[i]);cnt = cnt == null ? 0 : cnt;map.put(nums1[i], cnt + 1);}for (int i = 0; i < nums2.length; i++) {if (map.containsKey(nums2[i])) {int cnt = map.get(nums2[i]);if (cnt > 1) {map.put(nums2[i], cnt - 1);} else {map.remove(nums2[i]);}list.add(nums2[i]);}}int[] res = new int[list.size()];for (int i = 0; i < list.size(); i++) {res[i] = list.get(i);}return res;}
}
367. 有效的完全平方数
https://leetcode-cn.com/problems/valid-perfect-square/
二分查找,中规中矩
class Solution {public boolean isPerfectSquare(int num) {int min = 0, max = 46340;return binSearch(min, max, num);}public boolean binSearch(int min, int max, int num) {int mid = (min + max) / 2;if (min * min == num || mid * mid == num || max * max == num) {return true;}if (min >= max) return false;if (num < mid * mid) {return binSearch(min, mid, num);} else {return binSearch(mid + 1, max, num);}}
}
374. 猜数字大小
https://leetcode-cn.com/problems/guess-number-higher-or-lower/
本题是经典的二分查找题
注意 int mid = begin +(end - begin)/2; 不要用int mid = (end + begin)/2; 会越界
public class Solution extends GuessGame {public int guessNumber(int n) {return binSearch(1, n);}public int binSearch(int left, int right) {int mid = left + (right - left) / 2;int flag = guess(mid);if (flag == 0) return mid;else if (flag < 0) return binSearch(left, mid - 1);else return binSearch(mid + 1, right);}
}
383. 赎金信
https://leetcode-cn.com/problems/ransom-note/
解法1:适用于两个字串所包含字符不受任何限制的情况
class Solution {public boolean canConstruct(String ransomNote, String magazine) {char[] c1 = ransomNote.toCharArray();char[] c2 = magazine.toCharArray();HashMap<Character, Integer> map = new HashMap<>();for (int i = 0; i < c2.length; i++) {Integer cnt = map.get(c2[i]);cnt = cnt == null ? 0 : cnt;map.put(c2[i], cnt + 1);}for (int i = 0; i < c1.length; i++) {if (map.containsKey(c1[i])) {int cnt = map.get(c1[i]);if (cnt > 1) {map.put(c1[i], cnt - 1);} else {map.remove(c1[i]);}} else {return false;}}return true;}
}
解法2:由于本题只有小写字母,所以根据这个特性,可以用数组代替 hashmap
class Solution {public boolean canConstruct(String ransomNote, String magazine) {char[] chars1 = ransomNote.toCharArray();char[] chars2 = magazine.toCharArray();if (chars1.length > chars2.length) {return false;}int[] rans = new int[26];for (char c : chars1) {rans[c - 'a']++;}for (char c : chars2) {rans[c - 'a']--;}for (int i = 0; i < rans.length; i++) {if (rans[i] > 0) {return false;}}return true;}
}
387. 字符串中的第一个唯一字符
https://leetcode-cn.com/problems/first-unique-character-in-a-string/
class Solution {public int firstUniqChar(String s) {int[] chars = new int[26];for (int i = 0; i < s.length(); i++) {chars[s.charAt(i) - 'a']++;}for (int i = 0; i < s.length(); i++) {if (chars[s.charAt(i) - 'a'] == 1) {return i;}}return -1;}
}
评论区有人说,可以建立一个索引表记录首次出现的位置,就不用遍历两次字符串了。
389. 找不同
https://leetcode-cn.com/problems/find-the-difference/
按位异或
class Solution {public char findTheDifference(String s, String t) {char res = 0;char[] c1 = s.toCharArray();char[] c2 = t.toCharArray();for (char c : c1) {res = (char) (res ^ c);}for (char c : c2) {res = (char) (res ^ c);}return res;}
}
392. 判断子序列
https://leetcode-cn.com/problems/is-subsequence/
双指针,最后如果 p1 走到末尾,即可说明是子序列
class Solution {public boolean isSubsequence(String s, String t) {int p1 = 0, p2 = 0;char[] c1 = s.toCharArray();char[] c2 = t.toCharArray();while (p1 < c1.length && p2 < c2.length) {if (c1[p1] == c2[p2]) {p1++;p2++;} else {p2++;}}return p1 == c1.length;}
}
401. 二进制手表
https://leetcode-cn.com/problems/binary-watch/
逆向思考:遍历所有的时间,留下相加和为num的
class Solution {public List<String> readBinaryWatch(int num) {List<String> resList = new ArrayList<>();for (int i = 0; i < 12; ++i)for (int j = 0; j < 60; ++j)if (Integer.bitCount((i << 6) | j) == num)resList.add(i + ":" + (j > 9 ? "" : "0") + j);return resList;}
}
404. 左叶子之和
https://leetcode-cn.com/problems/sum-of-left-leaves/
二叉树问题,递归
class Solution {public int sumOfLeftLeaves(TreeNode root) {return sumLeft(root, false);}public int sumLeft(TreeNode node, boolean isLeft) {if (node == null) return 0;// 是叶子且在左边if (node.left == null && node.right == null && isLeft) {return node.val + sumLeft(node.right, false);}// 不是叶子或不在左边return sumLeft(node.left, true) + sumLeft(node.right, false);}
}
405. 数字转换为十六进制数
https://leetcode-cn.com/problems/convert-a-number-to-hexadecimal/
class Solution {public String toHex(int num) {int base = 16;// list 存储进制转换后的每一位List<Integer> list = new ArrayList<Integer>();long longNum;// 将负的 num 处理为补码对应的数if (num == 0) {return "0";} else if (num < 0) {longNum = 2L * Integer.MAX_VALUE + num + 2;} else {longNum = num;}// 经过上面的转化,此时正负可以统一处理while (longNum != 0) {int t = (int) (longNum % base);list.add(0, t);longNum /= base;}// 转换成字符串StringBuilder sb = new StringBuilder();for (int n : list) {if (n > 9) sb.append((char) (n + 'a' - 10));else sb.append(n);}return sb.toString();}
}
409. 最长回文串
别人那天并不是统计最长回文串,而是可以让字母重新组合!
思路:统计每个字母出现的次数,想象一个对称轴,偶数次可以放在对称轴两侧,奇数次只能作为对称轴,所以最终只能有一个出现奇数次数字母放在对称轴上。
class Solution {public int longestPalindrome(String s) {char[] cc = new char[122 - 65 + 1];char[] ss = s.toCharArray();for (char c : ss) {cc[c - 'A']++;}int total = 0;boolean hasSingle = false;for (char c : cc) {if (c % 2 == 1) hasSingle = true;total += c / 2;}total *= 2;if (hasSingle) total += 1;return total;}
}
412. Fizz Buzz
https://leetcode-cn.com/problems/fizz-buzz/
堪称最简单的一道题
class Solution {public List<String> fizzBuzz(int n) {List<String> list = new ArrayList();for(int i=1;i<=n;i++){if(i%3==0&&i%5==0)list.add("FizzBuzz");else if(i%3==0)list.add("Fizz");else if(i%5==0)list.add("Buzz");else list.add(""+i);}return list;}
}
414. 第三大的数
https://leetcode-cn.com/problems/third-maximum-number/
class Solution {public int thirdMax(int[] nums) {int flag1,flag2,flag3;long max1,max2,max3;flag1=flag2=flag3=0;max1=max2=max3=Long.MIN_VALUE;for(int i:nums){if((long)i>max1){max1=(long)i;flag1=1;}}for(int i:nums){if((long)i>max2&&(long)i<max1){max2=(long)i;flag2=1;}}for(int i:nums){if((long)i>max3&&(long)i<max2){max3=(long)i;flag3=1;}}if(flag1+flag2+flag3==3)return (int)max3;return (int)max1;}
}
leetcode 简单题合集(Java版)相关推荐
- 力扣简单题合集(带答案)
1.给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元素不能使用两遍 ...
- Coderforces 字符串水题合集
今天我们聊聊 Coderforces 字符串水题合集. 字符串就是string. 这是string的百度翻译,我们要谈的是画框的.↓ string是C++.java.VB等编程语言中的字符串,字符串是 ...
- 计算机组成原理常考大题合集
计算机组成原理常考大题合集 1.在"Cache-主存-辅存"三级存储体系中,"Cache-主存"结构与"主存-辅存"结构的引入为了解决什么问 ...
- aspose使用合集java(Word、Excel、PPT转PDF)
aspose使用合集java(Word.Excel.PPT转PDF) aspose使用合集java(Word.Excel.PPT转PDF 文档所需jar包 Word转为PDF 获取license 简单 ...
- 网络安全web方向入门题合集
网络安全web方向入门题合集 [HCTF 2018]WarmUp 验证 [极客大挑战 2019]EasySQL [极客大挑战 2019]Havefun [强网杯 2019]随便注 前期工作 堆叠注入查 ...
- 2020年前端面试之JS手写代码题合集
2020年前端面试之JS手写代码题合集 预计会有上千道题,后续慢慢补! 1. 写一个把字符串大小写切换的方法 function caseConvert(str){return str.replace ...
- 计算机视觉与模式识别代码合集第二版three
计算机视觉与模式识别代码合集第二版three Topic Name Reference code Optical Flow Horn and Schunck's Optical Flow ...
- 大英赛C类翻译题合集
大英赛C类翻译题合集 2012初赛 2013初赛 2013决赛 2014初赛 2014决赛 2012初赛 既然没有退路了,我们不妨试试他的方法.(might as well) Since there ...
- 备战网络工程师认证考试:历年真题合集
备战网络工程师认证考试:历年真题合集 网络工程师是通过学习和训练,掌握网络技术的理论知识和操作技能的网络技术人员.网络工程师能够从事计算机信息系统的设计.建设.运行和维护工作.参加全国计算机等级考试之 ...
最新文章
- 励志前行,加速BCH创新落地
- 游戏开发攻略—黑杰克扑克牌
- Eclipse不给提示no default proposals
- Kickstart+NFS+DHCP+TFTP+PXElinux实现CentOS的网络自动安装
- java ecc signature_如何用python验证android/java的ECC签名
- 入行老师-郭靖(亦师亦友)同学
- 数字公式识别的学习笔记(legacy)
- VsVim - Shortcut Key (快捷键)
- 【Windows】添加开机启动项
- C语言程序设计经典例题(考研必背)(基础篇)第二周
- 计算机网络 校园网规划与设计方案,校园网网络规划与设计的方案.pdf
- 用计算机收传真,使用计算机发送和接收传真.doc
- 亲完如何进行下一步_接吻进阶指南,提出接吻,亲吻技巧,约会后怎么接吻
- 洛谷P3239 [HNOI2015]亚瑟王
- Android Device Moniter部分问题的解决办法:
- 移动GM220S光猫超级密码及改桥接模式方法
- java实现爬虫,爬取网易歌单信息
- Mysql分页Limt
- 【开发一个简单的音乐播放器+服务端】【一】
- Intel_IPP 的基本使用方法
热门文章
- CodeForces - 125C Hobbits' Party(思维+构造)
- HDU - 4552 怪盗基德的挑战书(后缀数组+RMQ/KMP+dp)
- c/c++ 两种文件流用法
- 华为鲲鹏弹性云服务器KM1_#化鲲为鹏,我有话说# 鲲鹏弹性云服务器配置 Tomcat...
- Fibonacci数列的幂和
- delphi中的第三方控件如何安装
- (三)Boost库之字符串处理
- GetModuleHandle,AfxGetInstanceHandle使用区别
- 使用LeakTracer检测android NDK C/C++代码中的memory leak
- TLS1.3握手流程以及参数详解