Plantre Plantre
首页
  • 算法

    • 查找
    • 排序
  • 力扣

    • 排序
技术
硬件
逆向
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

plantre

一个后端开发者
首页
  • 算法

    • 查找
    • 排序
  • 力扣

    • 排序
技术
硬件
逆向
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机组成原理

  • 操作系统

  • 计算机网络

  • 设计模式

  • Java

  • Spring

  • SpringCloud

  • MySQL

  • Redis

  • 分布式

  • Zookeeper

  • Dubbo

  • Kafka

  • 数据结构

  • 算法

  • OJ

    • 自定义
      • 排序
      • 位运算
      • 二分查找
      • 递归
      • 双指针(逆向,快慢)
      • 滑动窗口
      • 辅助栈
      • 贪心
      • 回溯
      • 动态规划
      • 二叉树
      • DFS
      • 拼接&拆分
      • 模拟
      • 工业实现原理
      • 数学
      • 字符串
    • 从道家哲学看计算机?
    • 后端
    • OJ
    plantre
    2025-06-11
    目录

    自定义

    # 1. 两数之和 - 力扣(LeetCode) (opens new window)

    # 哈希表
    class Solution {
        public int[] twoSum(int[] nums, int target) {
            Map<Integer,Integer> hashtable = new HashMap<>();
            for(int i = 0; i < nums.length; i++) {
                if (hashtable.containsKey(target - nums[i])) {
                    return new int[]{hashtable.get(target - nums[i]), i};
                } else {
                    hashtable.put(nums[i],i);
                }
            }
            return new int[0];
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    # 560. 和为 K 的子数组 - 力扣(LeetCode) (opens new window)

    # 前缀和
    class Solution {
        public int subarraySum(int[] nums, int k) {
            // 子数组 [j, i] 的和可表示为 sum[i] - sum[j-1] = k → 等价于 sum[j-1] = sum[i] - k
            Map<Integer, Integer> prefixSumMap = new HashMap<>();
            // 初始化:前缀和为0出现1次
            prefixSumMap.put(0, 1);
            int sum = 0;
            int count = 0;
            for (int num : nums) {
                sum += num;
                // sum - k 代表在位置 i 之前,是否存在某个前缀和 sum[j] 等于当前前缀和减去 k
                if (prefixSumMap.containsKey(sum - k)) {
                    count += prefixSumMap.get(sum - k);
                }
                // 更新当前前缀和的出现次数
                prefixSumMap.put(sum, prefixSumMap.getOrDefault(sum, 0) + 1);
            }
            return count;
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

    # 169. 多数元素 - 力扣(LeetCode) (opens new window)

    # 摩尔投票
    class Solution {
        public int majorityElement(int[] nums) {
            // 初始候选元素
            int candidate = nums[0];
            // 初始票数
            int count = 1;
            for (int i = 1; i < nums.length; i++) {
                // 票数归零时更新候选元素
                if (count == 0) { 
                    candidate = nums[i];
                    count = 1;
                } else if (nums[i] == candidate) {
                    // 相同元素,票数增加
                    count++;
                } else {
                    count--;
                }
            }
            return candidate;
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    # 哈希表
    class Solution {
        public int majorityElement(int[] nums) {
            HashMap<Integer, Integer> map = new HashMap<>();
            for (int num : nums) {
                map.put(num, map.getOrDefault(num, 0) + 1);
                if (map.get(num) > nums.length / 2) {
                    return num;
                }
            }
            return -1;
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    编辑 (opens new window)
    上次更新: 2025/07/25, 12:08:10
    排序
    排序

    ← 排序 排序→

    最近更新
    01
    加油鸭
    07-30
    02
    要点总结
    07-28
    03
    字符串
    07-15
    更多文章>
    Theme by Vdoing | Copyright © 2025-2025 plantre | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式