- 考虑有没有重复计算// 我们实现假定 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.
- 福哥答案2020-06-13:福哥口诀法:简链字跳整 压快压SDS simple synamic string:简单动态字符串。支持自动动态扩容的字节数组 。list :链表 。双端链表。dict :字典。使用双哈希表实现的, 支持平滑扩容的字典 。zskiplist :跳跃表。附加了后向指针的跳跃表 。intset : 整数集合。用于存储整数数值集合的自有结构 。ziplist :压缩列表... 福哥答案2020-06-13:福哥口诀法:简链字跳整 压快压SDS simple synamic string:简单动态字符串。支持自动动态扩容的字节数组 。list :链表 。双端链表。dict :字典。使用双哈希表实现的, 支持平滑扩容的字典 。zskiplist :跳跃表。附加了后向指针的跳跃表 。intset : 整数集合。用于存储整数数值集合的自有结构 。ziplist :压缩列表...
- 福哥答案2020-06-11:福哥口诀法:字哈列集有(string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合))位超地流(位图bitmaps, 超日志hyperloglogs, 地理空间索引geospatial indexes,流streams) 福哥答案2020-06-11:福哥口诀法:字哈列集有(string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合))位超地流(位图bitmaps, 超日志hyperloglogs, 地理空间索引geospatial indexes,流streams)
- 2020-06-10:给定一个无序数组,里面数都是成双数的,只有一个数是成单数的,求这个数? 如果上面那题里面有两个单数,怎么求出来?福哥答案2020-06-10:1.异或2.字典或集合3.排序golang语言采用异或方式,代码如下:package test22_singlenumber3 import ( "fmt" "testing") //go test -v -test.... 2020-06-10:给定一个无序数组,里面数都是成双数的,只有一个数是成单数的,求这个数? 如果上面那题里面有两个单数,怎么求出来?福哥答案2020-06-10:1.异或2.字典或集合3.排序golang语言采用异或方式,代码如下:package test22_singlenumber3 import ( "fmt" "testing") //go test -v -test....
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签