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

LeetCode(Hot100)——1:两数之和

方法1:暴力求解

  • 利用两次for循环来处理, 外循环确定一个数字, 利用内循环不断求和来判断是否两数之和为target,来进行求解。
public class LeetCode1 {@Test//测试方法public void test() {int [] nums={2,7,11,15};int target=9;//调用方法System.out.println(Arrays.toString(twoSum(nums,target)));}//暴力求解public int[] twoSum(int[] nums, int target) {for(int i=0;i<nums.length;i++){for(int j=i+1;j<nums.length;i++){if(nums[i]+nums[j]==target){//if(i!=j&&nums[i]+nums[j]==target)//返回一个数组,new一个数组。return new int[]{i,j};}}}//定义返回值应该是int类型的数组,所以更合理的解释是返回return new int[0](本身的含义是长度为0的空数组)return new int[0];//假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回null,才能对返回数组进一步处理,而如果返回空数组,则无须null引用检查//return null;}
}

暴力求解的时间复杂度是O(n2)

方法2:哈希映射

  • 哈希的时间复杂度为O(1),利用哈希容器map降低时间复杂度
  • 遍历数组 nums,i 为当前下标,每个值都判断map中是否存在 target-nums[i] 的 key 值
  • 如果存在则找到了两个值,如果不存在则将当前的 (nums[i],i) 存入 map中,继续遍历直到找到为止
  • 如果最终都没有结果则抛出异常
 // 哈希表存储检查过的数字
public int[] twoSum(int[] nums, int target) {// 创建一个哈希表用于存储检查过的数字Map<Integer, Integer> map = new HashMap<>();// 遍历数组for(int i = 0; i < nums.length; i++) {// 计算目标值与当前数字的差值int complement = target - nums[i];// 检查哈希表中是否包含差值if(map.containsKey(complement)) {// 如果存在差值,则返回差值的索引和当前数字的索引// 如果HashMap中包含target-nums[i],则返回HashMap中target-nums[i]对应的值和ireturn new int[] {map.get(complement), i};}// 将nums[i]和i放入HashMap中map.put(nums[i], i);}// 如果没有找到,则返回一个长度为0的数组return new int[0];;
}
http://www.lryc.cn/news/259243.html

相关文章:

  • 【Qt】报错error:undefined reference to `vtable for Consumer‘的解决方法
  • 【linux系统】用户功能与权限详细总结
  • ELK简单介绍二
  • video 标签 各种属性及所有事件监听
  • TS中断言、转换的应用
  • 【代码随想录算法训练营-第四天】【链表】24,19, 面试题 02.07,142
  • 代理设计模式
  • ubuntu安装docker及docker常用命令
  • STM32-TIM定时器输出比较
  • 《Easy3d+Qt+VTK》学习
  • 多平台展示预约的服装小程序效果如何
  • Gti GUI添加标签
  • 高云GW1NSR-4C开发板M3硬核应用
  • 【RTOS学习】模拟实现任务切换 | 寄存器和栈的变化
  • 1.2 轻量级数据交互格式–JSON
  • charCodeAt() 方法
  • Flask中redis的配置与使用
  • 生产者与消费者模型
  • 透析回溯的模板
  • 浅谈web性能测试
  • Qt 容器QGroupBox带有标题的组框框架
  • Linux系统解决“Key was rejected by service”
  • 【C++ Primer Plus学习记录】字符函数库cctype
  • C# WebSocket简单使用
  • uni-app 一些实用的页面模板
  • STM32——震动传感器点亮LED灯
  • 使用 Timm 库替换 YOLOv8 主干网络 | 1000+ 主干融合YOLOv8
  • PHP中什么是闭包(Closure)?
  • boost::graph学习
  • 【C语言:动态内存管理】