- 福哥答案2020-01-07:1.7 数组+链表重要字段://HashMap的主干数组,可以看到就是一个Entry数组,初始值为空数组{},主干数组的长度一定是2的次幂,至于为什么这么做,后面会有详细分析。transient Entry<K,V>[] table = (Entry<K,V>[]) EMPTY_TABLE;//实际存储的key-value键值对的个数transient int ... 福哥答案2020-01-07:1.7 数组+链表重要字段://HashMap的主干数组,可以看到就是一个Entry数组,初始值为空数组{},主干数组的长度一定是2的次幂,至于为什么这么做,后面会有详细分析。transient Entry<K,V>[] table = (Entry<K,V>[]) EMPTY_TABLE;//实际存储的key-value键值对的个数transient int ...
- 第三步骤:找出初始值。学过数学归纳法的都知道,虽然我们知道了数组元素之间的关系式,例如dp[n] = dp[n-1] + dp[n-2],我们可以通过 dp[n-1] 和 dp[n-2] 来计算 dp[n],但是,我们得知道初始值例如⼀直推下去的话,会由 dp[3] = dp[2] + dp[1]。而 dp[2] 和 dp[1] 是不能再分解的了所以我们必须要能够直接获得 dp[2] 和 d... 第三步骤:找出初始值。学过数学归纳法的都知道,虽然我们知道了数组元素之间的关系式,例如dp[n] = dp[n-1] + dp[n-2],我们可以通过 dp[n-1] 和 dp[n-2] 来计算 dp[n],但是,我们得知道初始值例如⼀直推下去的话,会由 dp[3] = dp[2] + dp[1]。而 dp[2] 和 dp[1] 是不能再分解的了所以我们必须要能够直接获得 dp[2] 和 d...
- 动态规划,无非就是利用历史记录,来避免我们的重复计算。而这些历史记录,我们得需要一些变量来保存,一般是用⼀维数组或者⼆维数组来保存。第⼀步骤:定义数组元素的含义,上面说了了,我们会⽤用一个数组,来保存历史数组,假设用一维数组dp[] 吧。这个时候有非常重要的点,就是规定你这个数组元素的含义,例例如你的 dp[i] 是代表什么意思 动态规划,无非就是利用历史记录,来避免我们的重复计算。而这些历史记录,我们得需要一些变量来保存,一般是用⼀维数组或者⼆维数组来保存。第⼀步骤:定义数组元素的含义,上面说了了,我们会⽤用一个数组,来保存历史数组,假设用一维数组dp[] 吧。这个时候有非常重要的点,就是规定你这个数组元素的含义,例例如你的 dp[i] 是代表什么意思
- 考虑有没有重复计算// 我们实现假定 arr 数组已经初始化好的了了。int f(int n){if(n <= 2){return n;}//先判断有没计算过if(arr[n] != -1){//计算过,直接返回return arr[n];}else{// 没有计算过,递归计算,并且把结果保存到 arr数组⾥里里arr[n] = f(n-1) + f(n-1);reutrn arr[n];}... 考虑有没有重复计算// 我们实现假定 arr 数组已经初始化好的了了。int f(int n){if(n <= 2){return n;}//先判断有没计算过if(arr[n] != -1){//计算过,直接返回return arr[n];}else{// 没有计算过,递归计算,并且把结果保存到 arr数组⾥里里arr[n] = f(n-1) + f(n-1);reutrn arr[n];}...
- 福哥答案2020-11-15:此题来源于leetcode240和剑指 Offer(第 2 版)面试题4。1.线性查找。从二维数组的坐下角开始查找。如果当前元素等于目标值,则返回 true。如果当前元素大于目标值,则上移。如果当前元素小于目标值,则右移。2.线性查找+二分查找。当前元素上移和右移,采用二分法。要用到如下两道题:2.1.在一个有序数组中,找<=某个数最右侧的位置。2.2.在一个有... 福哥答案2020-11-15:此题来源于leetcode240和剑指 Offer(第 2 版)面试题4。1.线性查找。从二维数组的坐下角开始查找。如果当前元素等于目标值,则返回 true。如果当前元素大于目标值,则上移。如果当前元素小于目标值,则右移。2.线性查找+二分查找。当前元素上移和右移,采用二分法。要用到如下两道题:2.1.在一个有序数组中,找<=某个数最右侧的位置。2.2.在一个有...
- 福哥答案2020-11-13:二分法。有时候数组无序,同样可以采用二分法。这道题考察的是全局观,左边下降趋势,右边上升趋势,函数图像呈凹形,必有极小值。中左值和中值呈上升趋势,中值右边可以直接舍弃;中值和中右值呈下降趋势,中值左边可以直接舍弃。golang代码如下:package class01import ( "fmt" "testing")//局部最小值问题/*求其中一个极小... 福哥答案2020-11-13:二分法。有时候数组无序,同样可以采用二分法。这道题考察的是全局观,左边下降趋势,右边上升趋势,函数图像呈凹形,必有极小值。中左值和中值呈上升趋势,中值右边可以直接舍弃;中值和中右值呈下降趋势,中值左边可以直接舍弃。golang代码如下:package class01import ( "fmt" "testing")//局部最小值问题/*求其中一个极小...
- 福哥答案2020-11-04:福哥口诀法:收马李色坤(Collection、Map、List、Set、Queue)。李矢数链写(List:Vector矢量、ArrayList数组、LinkedList链表、CopyOnWriteList写时复制容器)。哈排枚写并(Set:HashSet哈希集、SortedSet有序集、EnumSet枚举集、CopyOnWriteArraySet写时复制数组集... 福哥答案2020-11-04:福哥口诀法:收马李色坤(Collection、Map、List、Set、Queue)。李矢数链写(List:Vector矢量、ArrayList数组、LinkedList链表、CopyOnWriteList写时复制容器)。哈排枚写并(Set:HashSet哈希集、SortedSet有序集、EnumSet枚举集、CopyOnWriteArraySet写时复制数组集...
- 福哥答案2020-11-03:1.输入链表头节点,奇数长度返回中点,偶数长度返回上中点 。1.1.快慢指针。1.2.单指针。1.3.数组。2.输入链表头节点,奇数长度返回中点,偶数长度返回下中点 。这道题是leetcode上的第876道题,叫【链表的中间节点】。2.1.快慢指针。2.2.单指针。2.3.数组。golang代码如下:package mainimport "fmt"func ma... 福哥答案2020-11-03:1.输入链表头节点,奇数长度返回中点,偶数长度返回上中点 。1.1.快慢指针。1.2.单指针。1.3.数组。2.输入链表头节点,奇数长度返回中点,偶数长度返回下中点 。这道题是leetcode上的第876道题,叫【链表的中间节点】。2.1.快慢指针。2.2.单指针。2.3.数组。golang代码如下:package mainimport "fmt"func ma...
- Ajax神操作六部曲 Ajax神操作六部曲
- 福哥答案2020-09-12:#福大大架构师每日一题#最大公约数1.【更相减损法】=【等值算法】,避免了取模运算,但是算法性能不稳定,最坏时间复杂度为O(max(a, b)))。2.【辗转相除法】,迭代和递归,时间复杂度不太好计算,可以近似为O(log(max(a, b))),但是取模运算性能较差。3.【Stein算法】,不但避免了取模运算,而且算法性能稳定,时间复杂度为O(log(max(... 福哥答案2020-09-12:#福大大架构师每日一题#最大公约数1.【更相减损法】=【等值算法】,避免了取模运算,但是算法性能不稳定,最坏时间复杂度为O(max(a, b)))。2.【辗转相除法】,迭代和递归,时间复杂度不太好计算,可以近似为O(log(max(a, b))),但是取模运算性能较差。3.【Stein算法】,不但避免了取模运算,而且算法性能稳定,时间复杂度为O(log(max(...
- 2020-07-31:给定一个二叉搜索树(BST),找到树中第K 小的节点。福哥答案2020-07-31:BST 的中序遍历是升序序列。1.递归法。时间复杂度:O(N),遍历了整个树。空间复杂度:O(N),用了一个数组存储中序序列。2.迭代法。时间复杂度:O(H+k),其中 H 指的是树的高度,由于我们开始遍历之前,要先向下达到叶,当树是一个平衡树时:复杂度为 O(logN+k)。当树是一个... 2020-07-31:给定一个二叉搜索树(BST),找到树中第K 小的节点。福哥答案2020-07-31:BST 的中序遍历是升序序列。1.递归法。时间复杂度:O(N),遍历了整个树。空间复杂度:O(N),用了一个数组存储中序序列。2.迭代法。时间复杂度:O(H+k),其中 H 指的是树的高度,由于我们开始遍历之前,要先向下达到叶,当树是一个平衡树时:复杂度为 O(logN+k)。当树是一个...
- 福哥答案2020-07-25:1.链表反转。反转,输出,反转。2.递归。3.数组。遍历存数组,然后反向遍历数组。4.栈。遍历存栈,然后pop栈输出。golang代码采用第2种方法。代码如下:package test27_reverseprint import ( "fmt" "testing") //Definition for singly-linked list.type L... 福哥答案2020-07-25:1.链表反转。反转,输出,反转。2.递归。3.数组。遍历存数组,然后反向遍历数组。4.栈。遍历存栈,然后pop栈输出。golang代码采用第2种方法。代码如下:package test27_reverseprint import ( "fmt" "testing") //Definition for singly-linked list.type L...
- 福哥答案2020-07-18:假设数组是[3,5,3,5],目标值是8。答案是否可重复,题里没说,所以分3种情况。如下:1.重复。答案是【0,1】【0,3】【1,2】【2,3】,序号组合,共4种组合。解法如下:1.1.嵌套遍历。时间复杂度:O(n^2)。1.2.哈希法。键存数组元素值,值存出现次数。时间复杂度:O(n)。1.3.排序+双指针夹逼。时间复杂度:O(nlogn)。2.半重复。答案... 福哥答案2020-07-18:假设数组是[3,5,3,5],目标值是8。答案是否可重复,题里没说,所以分3种情况。如下:1.重复。答案是【0,1】【0,3】【1,2】【2,3】,序号组合,共4种组合。解法如下:1.1.嵌套遍历。时间复杂度:O(n^2)。1.2.哈希法。键存数组元素值,值存出现次数。时间复杂度:O(n)。1.3.排序+双指针夹逼。时间复杂度:O(nlogn)。2.半重复。答案...
- 福哥答案2020-07-03:1.双重遍历。时间复杂度是O(N^2)。2.排序。采用外部排序。时间复杂度是O(NlogN)。3.遍历加哈希存储。空间换时间,时间复杂度是O(N),空间复杂度是O(N)。这种方法适用于小数据量,在这里用明显不合适。4.布隆过滤器。根据公式计算,万分之一的失误率需要228M内存。个人感觉这种方法不太合适。5.压缩位图。根据我目前的分析,压缩位图适合稀疏存储,在这里... 福哥答案2020-07-03:1.双重遍历。时间复杂度是O(N^2)。2.排序。采用外部排序。时间复杂度是O(NlogN)。3.遍历加哈希存储。空间换时间,时间复杂度是O(N),空间复杂度是O(N)。这种方法适用于小数据量,在这里用明显不合适。4.布隆过滤器。根据公式计算,万分之一的失误率需要228M内存。个人感觉这种方法不太合适。5.压缩位图。根据我目前的分析,压缩位图适合稀疏存储,在这里...
- 福哥答案2020-06-16:时间复杂度是O(N)。时间复杂度:O(N) where N is the size of the hash. 福哥答案2020-06-16:时间复杂度是O(N)。时间复杂度:O(N) where N is the size of the hash.
上滑加载中
推荐直播
-
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中 -
码道新技能,AI 新生产力——从自动视频生成到开源项目解析2026/04/08 周三 19:00-21:00
童得力-华为云开发者生态运营总监/何文强-无人机企业AI提效负责人
本次华为云码道 Skill 实战活动,聚焦两大 AI 开发场景:通过实战教学,带你打造 AI 编程自动生成视频 Skill,并实现对 GitHub 热门开源项目的智能知识抽取,手把手掌握 Skill 开发全流程,用 AI 提升研发效率与内容生产力。
回顾中
热门标签