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

LeetCode -- Flora -- edit 2025-04-16

1.两数之和

1. 两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

提示:

  • 2 <= nums.length <= 104
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
  • 只会存在一个有效答案

进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?

我的

    public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();for(int i=0;i<nums.length;i++){int temp = target - nums[i];if(hashtable!=null && hashtable.containsKey(temp)){return new int[]{hashtable.get(temp),i};}hashtable.put(nums[i],i);}return null;}

别人的

class Solution {public int[] twoSum(int[] nums, int target) {int length = nums.length;for(int i = 0; i < length - 1; i++){int back_i = length - i - 1;for(int j = i + 1; j < length; j++){int back_j = length - j - 1;if(nums[i] + nums[j] == target){return new int[]{i,j};}if(nums[back_i] + nums[back_j] == target){return new int[]{back_i, back_j};}}}return new int[0];}
}

2.字母异位词分组

49. 字母异位词分组

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

提示:

  • 1 <= strs.length <= 104
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写字母

我的

class Solution {public static List<List<String>> groupAnagrams(String[] strs) {List<List<String>> resData = new ArrayList<>();for(int i = 0 ; i<strs.length ; i++){String sortedString = sortString(strs[i]);if(resData.size() == 0){List<String> innerList = new LinkedList<>();innerList.add(sortedString);innerList.add(strs[i]);resData.add(innerList);}else{Boolean isOld = false;for(int j = 0 ; j<resData.size(); j++){String existingSortedString = resData.get(j).get(0);if(sortedString.equals(existingSortedString)){List<String> innerList = resData.get(j);innerList.add(strs[i]);resData.set(j,innerList);isOld = true;break;}}if (!isOld){//isNewList<String> innerList = new ArrayList<>();innerList.add(sortedString);innerList.add(strs[i]);resData.add(innerList);}}}for(int j = 0 ; j<resData.size(); j++){List<String> innerList = resData.get(j);innerList.remove(0);resData.set(j,innerList);}// 按内部 List 的 size 升序排序Collections.sort(resData, new Comparator<List<?>>() {@Overridepublic int compare(List<?> list1, List<?> list2) {return Integer.compare(list1.size(), list2.size());}});return resData;}public static String sortString(String input) {// 将字符串转换为字符数组char[] charArray = input.toCharArray();// 对字符数组进行排序Arrays.sort(charArray);// 将排序后的字符数组转换为字符串return new String(charArray);}}

别人的

import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class Solution {public List<List<String>> groupAnagrams(String[] strs) {return new AbstractList<List<String>>() {private final List<List<String>> list = new ArrayList<>();public void initList() {if (list.isEmpty()) {Map<String, List<String>> map = new HashMap();for(String s:strs){char[] cc=s.toCharArray();Arrays.sort(cc);String key =Arrays.toString(cc);List<String>list=map.getOrDefault(key, new ArrayList());list.add(s);map.put(key,list);}list.addAll(map.values());}}@Overridepublic List<String> get(int index) {initList();return list.get(index);}@Overridepublic int size() {initList();return list.size();}};}}

相关文章:

  • Numpy常用库方法总结
  • Langchain + Gemini API调用基本操作
  • MGR实现mysql高可用性
  • JVM:垃圾回收
  • JVM:运行时数据区和线程
  • 【计算机方向】中科院双一区TOP顶刊,IF=14.7,Nature招牌1区Top,中一篇直接就稳了!
  • map用法介绍
  • 前沿计组知识入门(六)
  • Arkts应用全局UI状态存储和持久化V2(AppStorageV2、PersistenceV2和@Type)
  • Idea集成AI:CodeGeeX开发
  • 【Leetcode-Hot100】缺失的第一个正数
  • 【LangChain核心组件】Memory:让大语言模型拥有持续对话记忆的工程实践
  • 杭电oj(2013-2028)题解
  • 100个GEO基因表达芯片或转录组数据处理023.GSE24807
  • 分布式锁框架Lock4j
  • 毛笔书体检测-hog+svm python opencv源码
  • 开启 Python 编程之旅:基础入门实战班全解析
  • antv/g6 图谱实现,自定义节点,自定义边,边动画
  • 内网穿透原理解析、使用网络场景、及如何实现公网访问步骤教程
  • Android ViewPager使用预加载机制导致出现页面穿透问题
  • 南昌哪里做网站比较好/论坛推广平台有哪些
  • 私人网站建设成本/百度热点榜单
  • 做网站常用的插件/石家庄手机端seo
  • 网站开发php制作/正规网络公司关键词排名优化
  • 做兼职一般去哪个网站好/打开百度一下网页版
  • 网站设计排行榜前十/网站怎么快速被百度收录