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

Leetcode日记

1.两数之和

暴力法:

    public int[] twoSum(int[] nums, int target) {//遍历数组for (int i = 0; i < nums.length; i++) {for (int j = i + 1; j < nums.length; j++) {if (nums[i] + nums[j] == target) {int[] result = {i, j};return result;}}}return null;}

利用hashmap

hashmap的算法使用特性就在于其对数组的特殊处理,数组有下标和value值,而hashmap有键值对,正好可以同时存储数组的下标与值。

优势体现在哪里?

显然优势体现在hashmap的随机存取。

同样的事讲数组替换为hashmap,时间复杂度能够提升。

public int[] twoSum2(int[] nums, int target) {//遍历数组HashMap<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {map.put(nums[i], i);}for (int i = 0; i < nums.length; i++) {if (map.get(target-nums[i])!=null) {return new int[]{i,map.get(target-nums[i])};}}return null;}

简单来讲,我们遍历一次数组,让target去与数组中的值nums[i]做减法,然后我们去hashmap利用其随机存取的特性,以O(1)的时间复杂度判断是否存在与target-nums[i]的值,从而减少了时间复杂度

2.移动零

数据结构为线性表

算法思想:双指针,i找到第一个为零的数,j找到i右边第一个不为零的数,交换。

class Solution {public void moveZeroes(int[] nums) {int i = 0;int j = 1;int temp;//算法思想:找到nums[i]等于0,并且nums[j]!=0的情况,两者交换,并将i指针指向为jwhile (i < nums.length - 1) {if (j==nums.length) break;if (nums[i] == 0) {j = i + 1;while (j <= nums.length - 1) {if (nums[j] == 0) j++;else {temp = nums[i];nums[i] = nums[j];nums[j] = temp;i++;break;}}}else i++;}}
}

3.相交链表

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {if (headA == null || headB == null) return null;ListNode i = headA;ListNode j = headB;//成功条件为两者的尾指针指向节点相同while (true) {if (i == j) return i;if (i.next == null && j.next == null) return null;if (i.next == null) i = headB;else i = i.next;if (j.next == null) j = headA;else j = j.next;}}
}

算法思想就是让A、B同步走,当遍历A指针的下个节点为空时,让遍历指针指向B,当遍历B指针的下个节点为空时,让遍历指针指向A。

当AB指针内容相同时,返回该节点,当A与B的下个指针都为null时返回null

这道题简单讲就是不在第一轮(A从头走到尾)去判断,因为长度不同,AB每次走的路径大小也相同,所以始终无法相遇,但在第二圈的时候,A会去走B的路,B会去走A的路,所以第二圈一定会相遇。

http://www.xdnf.cn/news/869077.html

相关文章:

  • PyTorch实战(8)——深度卷积生成对抗网络
  • MySQL 9.0 相较于 MySQL 8.0 引入了多项重要改进和新特性
  • 【DeepSeek】【Dify】:用 Dify 对话流+标题关键词注入,让 RAG 准确率飞跃
  • 数学复习笔记 25
  • 2025 年最新 conda 和 pip 国内镜像源
  • 2025 Vscode插件离线下载方式
  • 通过paramiko 远程在windows机器上启动conda环境并执行python脚本
  • kubernetes》》k8s》》kubectl proxy 命令后面加一个
  • Zookeeper 集群部署与故障转移
  • vue-16(Vuex 中的模块)
  • 智能推荐系统:协同过滤与深度学习结合
  • 从上下文学习和微调看语言模型的泛化:一项对照研究
  • 网络攻防技术十四:入侵检测与网络欺骗
  • `<CLS>` 向量是 `logits` 计算的“原材料”,`logits` 是基于 `<CLS>` 向量的下游预测结果
  • pikachu靶场通关笔记13 XSS关卡09-XSS之href输出
  • Spring 中注入 Bean 有几种方式?
  • 身体节奏失调现象探秘
  • Windows GDI 对象泄漏排查实战
  • Bootstrap 5学习教程,从入门到精通,Bootstrap 5 容器(Container)语法知识点及案例代码详解(4)
  • RAG-Gym:一个用于优化带过程监督的代理型RAG的统一框架
  • macOS 连接 Docker 运行 postgres
  • HarmonyOS 实战:给笔记应用加防截图水印
  • 【Kdump专题】kexec加载捕获内核和 makedumpfile保存Vmcore
  • GPUCUDA 发展编年史:从 3D 渲染到 AI 大模型时代(上)
  • LeetCode刷题---贪心算法---944
  • 《PyTorch:开启深度学习新世界的魔法之门》
  • 什么是分布式锁?几种分布式锁分别是怎么实现的?
  • Vue3+Vite中lodash-es安装与使用指南
  • 定制化5G专网服务,助力企业数字化转型
  • 华为OD最新机试真题-流水线-OD统一考试(B卷)