文章分类 -  算法及数据结构

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

点击右上角即可分享
微信分享提示