日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

leetcode 简单题合集(Java版)

發布時間:2024/2/28 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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;} }
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的leetcode 简单题合集(Java版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。