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. 力扣简单题合集(带答案)

    1.给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元素不能使用两遍 ...

  2. Coderforces 字符串水题合集

    今天我们聊聊 Coderforces 字符串水题合集. 字符串就是string. 这是string的百度翻译,我们要谈的是画框的.↓ string是C++.java.VB等编程语言中的字符串,字符串是 ...

  3. 计算机组成原理常考大题合集

    计算机组成原理常考大题合集 1.在"Cache-主存-辅存"三级存储体系中,"Cache-主存"结构与"主存-辅存"结构的引入为了解决什么问 ...

  4. aspose使用合集java(Word、Excel、PPT转PDF)

    aspose使用合集java(Word.Excel.PPT转PDF) aspose使用合集java(Word.Excel.PPT转PDF 文档所需jar包 Word转为PDF 获取license 简单 ...

  5. 网络安全web方向入门题合集

    网络安全web方向入门题合集 [HCTF 2018]WarmUp 验证 [极客大挑战 2019]EasySQL [极客大挑战 2019]Havefun [强网杯 2019]随便注 前期工作 堆叠注入查 ...

  6. 2020年前端面试之JS手写代码题合集

    2020年前端面试之JS手写代码题合集 预计会有上千道题,后续慢慢补! 1.  写一个把字符串大小写切换的方法 function caseConvert(str){return str.replace ...

  7. 计算机视觉与模式识别代码合集第二版three

    计算机视觉与模式识别代码合集第二版three     Topic Name Reference code Optical Flow Horn and Schunck's Optical Flow   ...

  8. 大英赛C类翻译题合集

    大英赛C类翻译题合集 2012初赛 2013初赛 2013决赛 2014初赛 2014决赛 2012初赛 既然没有退路了,我们不妨试试他的方法.(might as well) Since there ...

  9. 备战网络工程师认证考试:历年真题合集

    备战网络工程师认证考试:历年真题合集 网络工程师是通过学习和训练,掌握网络技术的理论知识和操作技能的网络技术人员.网络工程师能够从事计算机信息系统的设计.建设.运行和维护工作.参加全国计算机等级考试之 ...

最新文章

  1. 励志前行,加速BCH创新落地
  2. 游戏开发攻略—黑杰克扑克牌
  3. Eclipse不给提示no default proposals
  4. Kickstart+NFS+DHCP+TFTP+PXElinux实现CentOS的网络自动安装
  5. java ecc signature_如何用python验证android/java的ECC签名
  6. 入行老师-郭靖(亦师亦友)同学
  7. 数字公式识别的学习笔记(legacy)
  8. VsVim - Shortcut Key (快捷键)
  9. 【Windows】添加开机启动项
  10. C语言程序设计经典例题(考研必背)(基础篇)第二周
  11. 计算机网络 校园网规划与设计方案,校园网网络规划与设计的方案.pdf
  12. 用计算机收传真,使用计算机发送和接收传真.doc
  13. 亲完如何进行下一步_接吻进阶指南,提出接吻,亲吻技巧,约会后怎么接吻
  14. 洛谷P3239 [HNOI2015]亚瑟王
  15. Android Device Moniter部分问题的解决办法:
  16. 移动GM220S光猫超级密码及改桥接模式方法
  17. java实现爬虫,爬取网易歌单信息
  18. Mysql分页Limt
  19. 【开发一个简单的音乐播放器+服务端】【一】
  20. Intel_IPP 的基本使用方法

热门文章

  1. CodeForces - 125C Hobbits' Party(思维+构造)
  2. HDU - 4552 怪盗基德的挑战书(后缀数组+RMQ/KMP+dp)
  3. c/c++ 两种文件流用法
  4. 华为鲲鹏弹性云服务器KM1_#化鲲为鹏,我有话说# 鲲鹏弹性云服务器配置 Tomcat...
  5. Fibonacci数列的幂和
  6. delphi中的第三方控件如何安装
  7. (三)Boost库之字符串处理
  8. GetModuleHandle,AfxGetInstanceHandle使用区别
  9. 使用LeakTracer检测android NDK C/C++代码中的memory leak
  10. TLS1.3握手流程以及参数详解