文章分类 - 算法及数据结构
发表于 2021-04-07 09:26阅读:171评论:0推荐:0
摘要:为什么HashMap需要加载因子? HashMap的底层是哈希表,是存储键值对的结构类型,它需要通过一定的计算才可以确定数据在哈希表中的存储位置: static final int hash(Object key) { int h; return (key == null) ? 0 : (h = k
阅读全文 »
发表于 2021-03-19 09:34阅读:1842评论:0推荐:0
摘要:在计算机中,数值是以二进制补码形式存储的,java 也不例外。 8 位二进制补码的范围为 -128~127(-27 ~ 27 - 1);byte 的范围就是 8 位二进制补码的范围。 那么,问题来了。8 位二进制补码为什么能表示 -128 呢? 补码中第一位是符号位,只有剩下的七位是数值位,即 数值
阅读全文 »
发表于 2020-12-18 11:19阅读:3896评论:0推荐:2
摘要:本文就借助经典的「最长递增子序列问题」来讲一讲设计动态规划的通用技巧:数学归纳思想。 最长递增子序列(Longest Increasing Subsequence,简写 LIS)是非常经典的一个算法问题,比较容易想到的是动态规划解法,时间复杂度 O(N^2),我们借这个问题来由浅入深讲解如何找状态转
阅读全文 »
发表于 2020-12-17 21:28阅读:145评论:0推荐:0
摘要:转自我作了首诗,保你闭着眼睛也能写对二分查找 Original labuladong 2/28 本文就来探究几个最常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界。而且,我们就是要深入细节,比如不等号是否应该带等号,mid 是否应该加一等等。 以问答的形式,分析这些细节的差异以及出现这些差
阅读全文 »
发表于 2020-12-14 09:30阅读:206评论:0推荐:0
摘要:一个函数秒杀 2Sum 3Sum 4Sum 问题 本文就由浅入深,层层推进,用一个函数来解决所有 nSum 类型的问题。 一、twoSum 问题 力扣上的 twoSum 问题,题目要求返回的是索引,这里我来编一道 twoSum 题目,不要返回索引,返回元素的值: 如果假设输入一个数组 nums 和一
阅读全文 »
发表于 2020-11-06 20:32阅读:157评论:0推荐:0
摘要:转自双指针技巧直接秒杀五道算法题 一、快慢指针的常见算法 快慢指针一般都初始化指向链表的头结点head,前进时快指针fast在前,慢指针slow在后,巧妙解决一些链表中的问题。 1、判定链表中是否含有环 经典解法就是用两个指针,一个跑得快,一个跑得慢。如果不含有环,跑得快的那个指针最终会遇到null
阅读全文 »
发表于 2020-10-15 10:04阅读:74评论:0推荐:0
摘要:一、寻找一个数(基本的二分搜索) 这个场景是最简单的,肯能也是大家最熟悉的,即搜索一个数,如果存在,返回其索引,否则返回 -1。 int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1;
阅读全文 »