当前位置: 首页 > news >正文

力扣热题100(方便自己复习,自用)

力扣热题100

1. 两数之和 - 力扣(LeetCode)

  • 查找两数之和是不是等于target
  • 也就是我们找到一个数之后,用target将其减掉,再寻找应当对应的元素是什么
  • 每找到一个数,我们就将其放在集合中,因为集合中可以去重,保证我们只遍历过一次,然后再继续遍历数组,将target减去当前的数组中的值,看看已经遍历过的数组中是不是有该值,有的话就加入返回结果。
  • 没有的话就将其加入。

思想:用集合存放遍历过的数值,然后根据当前定位到的数值,判断自己寻找的数值在集合中是否出现,若出现就返回结果。

class Solution {public int[] twoSum(int[] nums, int target) {int[] res = new int[2];Map<Integer,Integer> map = new HashMap<>();if(nums.length == 0 || nums == null){return res;}for(int i = 0;i < nums.length;i++){int temp = target - nums[i];if(map.containsKey(temp)){res[0] = map.get(temp);res[1] = i;}else{map.put(nums[i],i);}}return res;}
}

49. 字母异位词分组 - 力扣(LeetCode)

思想:如果可以重组后构成一个单词,那么可以把字符串先转换成字符数组,然后对字符数组中的字母进行排序。将排序过后的字符数组转换成字符串,然后再作为键出现。然后把键一样的值添加到该键对应的列表当中即可。如果没有改键,那就创建一个新的链表,并同时把键值对插入进去。

class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String,List<String>> map = new HashMap<>();for(String str : strs){char[] array = str.toCharArray();Arrays.sort(array);String key = new String(array);List<String> list = map.getOrDefault(key,new ArrayList<>());list.add(str);map.put(key,list);}return new ArrayList<List<String>>(map.values());}
}

128. 最长连续序列 - 力扣(LeetCode)

思想:遍历该数组,当遍历到的元素,在该集合中有前驱的时候就跳过。也就是说,遍历到的数字必须是该序列中第一个打头的才进行处理和操作。并且要记录是当前数字打头的连续序列更长还是已经记录的旧的更长。

class Solution {public int longestConsecutive(int[] nums) {Set<Integer> sets = new HashSet<>();for(int num : nums){sets.add(num);}int maxLong = 0;for(int set : sets ){int num = set;if(!sets.contains(num - 1)){int curLong = 1;while(sets.contains(num+1)){num++;curLong++;}maxLong = Math.max(curLong,maxLong);}}return maxLong;}
}

283. 移动零 - 力扣(LeetCode)

思想:使用双指针法进行求解,左指针先不动,指向已经处理好的序列的尾部,右指针寻找不为零的时候,如果不为零,就和left指向的元素进行交换。到最后,left之前的数组就都是不为零的,且位置没有被改变。

class Solution {public void moveZeroes(int[] nums) {int left = 0, right = 0,len = nums.length;while(right < len){if(nums[right] != 0){int temp = nums[right];nums[right] = nums[left];nums[left++] = temp;}right++;}}
}

饿了吗2025.3.21

1.求V字形的数组,也就是连续的三个数字,中间是凹进去的。

package dlut.com.java;import java.util.Scanner;
public class Main{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] arr = new int[n];int count = 0;for(int i = 0;i < n;i++){arr[i] = scanner.nextInt();}for(int i = 1;i < n-1;i++){if(arr[i]<arr[i-1] && arr[i]<arr[i+1]){count++;}}System.out.println(count);}
}

2.第一个数字n:是字符串的长度,第二个数字g:是相差应该小于等于的,若数组的位置下标奇偶性相同,且满足相差小于等于g那么就是有缘分的位置对数。

package dlut.com.java;import java.util.Scanner;
public class Main{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int g = scanner.nextInt();String s = scanner.next();int[] count1 = new int[26];int[] count2 = new int[26];char[] c = s.toCharArray();for(int i = 0;i < n;i++){if(i%2==0){//记录中间差几个元素count1[c[i] - 'a']++;}else{count2[c[i] - 'a']++;}}//count的下标就是和a相差几个元素for(int i = 0;i<26;i++){if(count1[i] != 0)System.out.println("count1["+i+"]="+count1[i]);}for(int i = 0;i<26;i++){if(count2[i] != 0)System.out.println("count2["+i+"]="+count2[i]);}long sum = 0;for(int i = 0;i < 26;i++){sum += (long)count1[i]*(count1[i]-1)/2;for(int j = i+1;j<26;j++){if(Math.abs(j - i - 1)<=g){sum +=(long) count1[i]*count1[j];}}}for(int i = 0;i < 26;i++){sum += (long)count2[i]*(count2[i]-1)/2;for(int j = i+1;j<26;j++){if(Math.abs(j - i - 1)<=g){sum +=(long) count2[i]*count2[j];}}}System.out.println(sum);}
}

http://www.mrgr.cn/news/95318.html

相关文章:

  • 计算机二级MS之Excel
  • RAG优化:利用python实现上下文感知(扩展)增强检索效果
  • S32K144外设实验(三):ADC单通道连续采样(中断)
  • Yolo系列之Yolo的基本理解
  • Android Compose 图标按钮深度剖析:从源码到实践(五)
  • 【初探数据结构】树与二叉树
  • Powershell WSL导出导入ubuntu22.04.5子系统
  • 【PCB工艺】基础:电子元器件
  • 【leetcode hot 100 208】实现Trie(前缀树)
  • 从零实现本地文生图部署(Stable Diffusion)
  • fontTools工具的使用介绍
  • 算法刷题记录——LeetCode篇(6) [第501~600题](持续更新)
  • Powershell WSL部署ubuntu22.04.5子系统
  • The Illustrated Stable Diffusion
  • A l密码学(Deepseek)
  • 内网渗透(CSMSF) 构建内网代理的全面指南:Cobalt Strike 与 Metasploit Framework 深度解析
  • 增加对路由参数的支持
  • 单台openEuler24.03 LTS下的开源大数据环境搭建
  • 2025年优化算法:龙卷风优化算法(Tornado optimizer with Coriolis force,TOC)
  • 高级java每日一道面试题-2025年3月07日-微服务篇[Eureka篇]-Eureka Server和Eureka Client关系?