如何用JS解决LeetCode 347题和剑指Offer 10- I斐波那契数列问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计713个文字,预计阅读时间需要3分钟。
菜鸡刷算法的一天,每天分享两题算法题,大家有这个想法的,可以关注我,一起坚持下去,每天打卡算法之旅。希望我们共同进步,一起加油!
+LC+347.+ 前K个高频元素 + 给你一个整数数组,返回其中出现频率前K高的元素。
菜鸡刷算法的一天,每天分享两题算法,大家有这个想法的,可以给我个关注,然后一起坚持每天的算法之旅。希望我们共同进步,一起加油。 LC 347. 前 K 个高频元素给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。
示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]
示例 2:
输入: nums = [1], k = 1
输出: [1]
解题思路:将数组中的数值与出现的次数一起放进哈希表中。然后再将哈希表中统计好的数值与次数放进一个数组中,并根据统计的次数进行排序。然后将前k个放进要输出的数组中
代码:
var topKFrequent = function(nums, k) {
const map = new Map();
for(let item of nums) { //将数组值遍历放进哈希表中,并存储上对应的出现次数
map.set(item, (map.get(item) || 0) + 1)
}
const arr = [...map].sort((a,b) => b[1] - a[1]) //将哈希表中的key value 分别放进数组中的 0 和 1 位置,并根据value 值进行排序
const res = [];
for(let i = 0; i < k; i++) {
res.push(arr[i][0]); //将数组前几个的key值放进最终输出的数组中
}
return res
};
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例 1:
输入:n = 2
输出:1
示例 2:
输入:n = 5
输出:5
代码:
var fib = function(n) {
if(n < 2) {
return n
}
let p = 0, q = 0, r = 1;
for(let i = 2; i <= n; i++) {
p = q;
q = r;
r = (p + q) % 1000000007;
}
return r
};
本文共计713个文字,预计阅读时间需要3分钟。
菜鸡刷算法的一天,每天分享两题算法题,大家有这个想法的,可以关注我,一起坚持下去,每天打卡算法之旅。希望我们共同进步,一起加油!
+LC+347.+ 前K个高频元素 + 给你一个整数数组,返回其中出现频率前K高的元素。
菜鸡刷算法的一天,每天分享两题算法,大家有这个想法的,可以给我个关注,然后一起坚持每天的算法之旅。希望我们共同进步,一起加油。 LC 347. 前 K 个高频元素给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。
示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]
示例 2:
输入: nums = [1], k = 1
输出: [1]
解题思路:将数组中的数值与出现的次数一起放进哈希表中。然后再将哈希表中统计好的数值与次数放进一个数组中,并根据统计的次数进行排序。然后将前k个放进要输出的数组中
代码:
var topKFrequent = function(nums, k) {
const map = new Map();
for(let item of nums) { //将数组值遍历放进哈希表中,并存储上对应的出现次数
map.set(item, (map.get(item) || 0) + 1)
}
const arr = [...map].sort((a,b) => b[1] - a[1]) //将哈希表中的key value 分别放进数组中的 0 和 1 位置,并根据value 值进行排序
const res = [];
for(let i = 0; i < k; i++) {
res.push(arr[i][0]); //将数组前几个的key值放进最终输出的数组中
}
return res
};
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例 1:
输入:n = 2
输出:1
示例 2:
输入:n = 5
输出:5
代码:
var fib = function(n) {
if(n < 2) {
return n
}
let p = 0, q = 0, r = 1;
for(let i = 2; i <= n; i++) {
p = q;
q = r;
r = (p + q) % 1000000007;
}
return r
};

