自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(250)
  • 收藏
  • 关注

原创 在终端cmd输入java、javac、java -version什么都没显示

把javapath的文件夹和环境变量都删除即可

2022-03-04 17:01:39 703

原创 859.亲密字符串。简单易懂0ms

class Solution { public boolean buddyStrings(String s, String goal) { int len1 = s.length(), len2 = goal.length(); if(len1 != len2) return false; Set<Character> set = new HashSet<>(); for(int i = 0; i < l

2022-02-01 13:30:33 551

原创 771.宝石与石头

class Solution { public int numJewelsInStones(String jewels, String stones) { int len1 = jewels.length(), len2 = stones.length(); int[] arr = new int[256]; int res = 0; for(int i = 0; i < len1; i++){ arr[j

2022-02-01 01:43:31 514

原创 645.错误的集合。哈希表0ms

// 哈希中出现2次的是重复元素,未出现的则是缺失元素,返回这两个即可class Solution { public int[] findErrorNums(int[] nums) { // 哈希中出现2次的是重复元素,未出现的则是缺失元素,返回这两个即可 int len = nums.length; int[] count = new int[len + 1]; for(int num : nums) count[num]++;

2022-02-01 00:52:36 535

原创 594.最长和谐子序列。滑动窗口0ms

class Solution { // 滑动窗口 public int findLHS(int[] nums) { Arrays.sort(nums); int left = 0, res = 0; for(int right = 0; right < nums.length; right++){ while(nums[right] - nums[left] > 1){ ++l

2022-02-01 00:42:13 271

原创 389.找不同

字符串s和t中的ascⅡ求和,二者之差就是被添加的字符class Solution { // 字符串s和t中的ascⅡ求和,二者之差就是被添加的字符 public char findTheDifference(String s, String t) { int sum_s = 0, sum_t = 0; for (int i = 0; i < s.length(); ++i) { sum_s += s.charAt(i);

2022-01-30 00:38:15 420

原创 13.罗马数字转整数

class Solution { public int romanToInt(String s) { HashMap<String, Integer> map = new HashMap<>(); map.put("I", 1); map.put("IV", 4); map.put("V", 5); map.put("IX", 9); map.put("X", 10);

2022-01-30 00:07:15 275

原创 205.同构字符串,哈希0ms。简单易懂

题目的意思:s的任意一个字符被t中唯一的字符对应,同时t的任意一个字符被s中唯一的字符对应class Solution { public boolean isIsomorphic(String s, String t) { // m1:s到t的映射,m2:t到s的映射 int[] m1 = new int[256]; int[] m2 = new int[256]; for (int i = 0; i < s.length();

2022-01-30 00:07:08 462

原创 268.丢失的数字,简单的哈希

class Solution { // 简单的哈希 public int missingNumber(int[] nums) { HashSet<Integer> set = new HashSet<>(); for(int num : nums) set.add(num); for(int i = 0; i <= nums.length; i++){ if(!set.contains(i)

2022-01-30 00:06:57 370

原创 12.整数转罗马数字,贪心。简单易懂0ms

贪心:每次尽量使用最大的数来表示。 比如对于 1994 这个数,如果我们每次尽量用最大的数来表示,依次选1000,900,90,4,会得到正确结果MCMXCIVclass Solution { // 贪心:每次尽量使用最大的数来表示。 比如对于 1994 这个数, // 如果我们每次尽量用最大的数来表示,依次选1000,900,90,4,会得到正确结果MCMXCIV public String intToRoman(int num) { int[] nums = {

2022-01-29 22:43:16 77

原创 面试题17.10.主要元素。摩尔投票法

与T169得摩尔投票法不同,本题最后需要对结果进行一个判断:统计出现次数,是否存在主要元素才行。class Solution { // 与T169的略有不同,本题不保证有众数,所以最后需要判断是否存在主要元素 public int majorityElement(int[] nums) { int nums_count = nums[0], count = 1; for(int i = 1; i < nums.length; i++){

2022-01-29 14:54:25 682

原创 1790.仅执行一次字符串交换能否使两个字符串相等

class Solution { public boolean areAlmostEqual(String s1, String s2) { if (s1.length() != s2.length()) return false; int count = 0, m = -1, n = -1; for (int i = 0, j = 0; i < s1.length(); i++, j++) { if (s1.charAt

2022-01-29 13:27:31 216

原创 1512.判断字符串的两半是否相似

class Solution { public boolean halvesAreAlike(String s) { Set<Character> set = new HashSet<>(Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U')); int len = s.length()/2; int count1 = 0, count2 = 0;

2022-01-29 13:09:28 5287

原创 1394.找出数组中的幸运数,计数排序简单易懂0ms

class Solution { public int findLucky(int[] arr) { int[] result = new int[501]; for(int i = 0; i < arr.length; i++){ result[arr[i]]++; } for(int i = 500; i > 0; i--){ if(result[i] == i) retu

2022-01-29 12:50:23 175

原创 1221.分割平衡字符串,简单易懂最优解

加一个减一个,经典题型class Solution { public int balancedStringSplit(String s) { int res = 0, count = 0; for (int i = 0; i < s.length(); i++) { if (s.charAt(i)=='R') ++count; if (s.charAt(i) == 'L') --count;

2022-01-29 11:43:57 177

原创 1189.“气球”的最大数量,简单易懂0ms

class Solution { public int maxNumberOfBalloons(String text) { int[] ans = new int[26]; char[] arr = text.toCharArray(); //记录每个字母出现的次数 for(int i = 0; i < arr.length; i++){ ans[arr[i] - 'a']++; }

2022-01-29 11:28:13 218

原创 713.乘积小于K的子数组,滑动窗口0ms

class Solution { public int numSubarrayProductLessThanK(int[] nums, int k) { if(k == 0 || k == 1) return 0; int left = 0; int sum = 1, result = 0; for(int right = 0; right < nums.length; right++){ sum = su

2022-01-29 00:54:40 84

原创 978.最长涡流子数组

T376变形,本题要求连续class Solution { public int maxTurbulenceSize(int[] arr) { int len = arr.length; int up = 1, down = 1, result = 1; for(int i = 1; i < len; i++){ if(arr[i] > arr[i - 1]){ up = down

2022-01-29 00:01:18 404

原创 1052.爱生气的书店老板,滑动窗口,简单易懂0ms

题目有点复杂,简单来说就是求数组指定长度最大和的问题-滑动窗口class Solution { public int maxSatisfied(int[] customers, int[] grumpy, int minutes) { int sum = 0, len = customers.length; for (int i = 0; i < len; i++) { // 不生气的部分进行相加,同时把此顾客置0

2022-01-29 00:00:59 260

原创 643.子数最大平均数Ⅰ。滑动窗口

class Solution { public double findMaxAverage(int[] nums, int k) { int sum = 0, len = nums.length; for(int i = 0; i < k; i++) sum += nums[i]; int max = sum; for(int i = k; i < len; i++){ sum -= nums[i -

2022-01-28 23:03:52 60

原创 219.存在重复元素Ⅱ

class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { HashSet<Integer> set = new HashSet<>(); for(int i = 0; i < nums.length; i++) { if(set.contains(nums[i])) { return tr

2022-01-28 22:50:42 5666

原创 面试题10.01.合并排序数组0ms

class Solution { // 从后往前 public void merge(int[] A, int m, int[] B, int n) { int k = m + n - 1, i = m - 1, j = n - 1; while(i >= 0 && j >= 0){ if(A[i] < B[j]) A[k--] = B[j--]; else A[k--] = A

2022-01-28 15:17:33 698

原创 2000.反转单词前缀0ms

class Solution { public String reversePrefix(String word, char ch) { int k = word.indexOf(String.valueOf(ch)); if(k == 0 || k == -1) return word; char[] result = word.toCharArray(); for(int i = 0; i <= k/2; i++){

2022-01-28 13:46:44 137

原创 1768.交替合并字符串

class Solution { public String mergeAlternately(String word1, String word2) { int len1 = word1.length(), len2 = word2.length(); int index = 0; char[] result = new char[len1 + len2]; for(int i = 0; i < len1 || i < l

2022-01-28 13:29:27 145

原创 1089.复写零

class Solution { public void duplicateZeros(int[] arr) { for(int i = 0; i < arr.length; i++){ if(arr[i] == 0){ for(int j = arr.length - 1; j > i; j--){ arr[j] = arr[j - 1]; }

2022-01-28 11:31:24 54

原创 922.按奇偶排序数组Ⅱ

class Solution { public int[] sortArrayByParityII(int[] nums) { int j = 1;// 下标 for(int i = 0; i < nums.length - 1; i += 2){ if((nums[i] % 2) != 0){ while((nums[j] % 2) != 0) j += 2; int te

2022-01-28 11:12:59 151

原创 917.仅仅反转字母

class Solution { public String reverseOnlyLetters(String s) { int left = 0, right = s.length() - 1; char[] result = s.toCharArray(); while(left < right){ while(left < right && !Character.isLetter(result

2022-01-28 11:04:19 66

原创 955.按奇偶排序数组

class Solution { public int[] sortArrayByParity(int[] nums) { int left = 0, right = nums.length - 1; while(left <= right){ if(nums[left] % 2 == 0) ++left; else{ int temp = nums[left];

2022-01-28 10:51:47 58

原创 881.救生艇

排序,然后看最重的能否跟最轻的一起走,如果可以,一起走,如果不行,单独走。class Solution { public int numRescueBoats(int[] people, int limit) { int result = 0, left = 0, right = people.length - 1; Arrays.sort(people); while(left <= right){ if(left =

2022-01-28 10:43:39 168

原创 845.数组中的最长山脉,中心扩展

先找到比左右两侧大的数 然后以这个数为中心 依次找到左右的长度class Solution { public int longestMountain(int[] arr) { if(arr == null || arr.length <= 2) return 0; int max = 0; for(int i = 1; i < arr.length - 1; i++){ if(arr[i] > arr[i

2022-01-27 22:01:31 49

原创 696.计数二进制字串,中心扩展法

class Solution { public int countBinarySubstrings(String s) { int result = 0; char[] chars = s.toCharArray(); for(int i = 1; i < s.length(); i++){ int left = i - 1, right = i; char leftChar = chars[le

2022-01-27 21:16:57 65

原创 680.验证回文串,不一样的思路

class Solution { public boolean validPalindrome(String s) { int i = 0, j = s.length() - 1; while(i < j){ if(s.charAt(i) != s.charAt(j)){ // 有一次可以删除的机会 return isVaild(s, i + 1, j) || isVaild

2022-01-27 20:53:21 49

原创 443.压缩字符串,双指针简单易懂注释版0ms

难点主要是字符串中超过10次的元素class Solution { public int compress(char[] chars) { int slow = 0, fast = 0; while(fast < chars.length){ int count = 1; while(fast + 1 < chars.length && chars[fast] == chars[fast +

2022-01-27 20:16:27 559

原创 165.比较版本号

class Solution { public int compareVersion(String version1, String version2) { int i = 0, j = 0; int len1 = version1.length(), len2 = version2.length(); while(i < len1 || j < len2){ int a = 0, b = 0;

2022-01-27 19:36:31 139

原创 面试题 16.06最小差

逐渐逼近class Solution { public int smallestDifference(int[] a, int[] b) { int len1 = a.length, len2 = b.length; Arrays.sort(a);Arrays.sort(b); long result = Integer.MAX_VALUE; int i = 0, j = 0; while(i < len1 &a

2022-01-27 13:46:02 65

原创 面试题 08.03.魔术索引。跳跃查找

跳跃查找法因为是有序数组,若 nums[i]!=i , 下标[i,nums[i])区间内将不会产生结果在此区间内遍历属于无用功,则i可以直接跳到nums[i]位置继续向后遍历class Solution { public int findMagicIndex(int[] nums) { for(int i = 0;i < nums.length; ){ if(nums[i] == i){ return i;

2022-01-27 11:21:09 80

原创 1539.第K个缺失的正整数。一行代码解决0ms

前面每有一个整数出现就把空位补上,空缺的数往后移一个class Solution { public int findKthPositive(int[] arr, int k) { for(int i = 0; i < arr.length; i++){ if(arr[i] <= k) ++k; } return k; }}...

2022-01-27 10:53:42 162

原创 1385.两个数组间的距离值

class Solution { public int findTheDistanceValue(int[] arr1, int[] arr2, int d) { int result = arr1.length; for(int i : arr1){ for(int j : arr2){ if(Math.abs(i - j) <= d){ --result;

2022-01-27 10:51:28 83

原创 1894.找到需要补充粉笔的学生编号

class Solution { public int chalkReplacer(int[] chalk, int k) { int len = chalk.length; long sum = 0; for(int ch : chalk) sum += ch; k %= sum;// 多余的部分直接循环去掉 for(int i = 0; i < len; i++){ if(chalk

2022-01-27 10:51:15 862

原创 1351.统计有序矩阵中的负数,代码超级简单,一看就懂0ms

class Solution { public int countNegatives(int[][] grid) { if(grid.length == 0 || grid[0].length == 0) return 0; int count = 0; // 从右上角开始遍历,如果当前值≥0,由于是非递增,那么前面的都是非负 // 如果当前的<0,那么剩下的就都是负数了,直接开始下一列 for(int i = 0

2022-01-26 21:05:32 91

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除