Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

leetcode算法 #24

Open
mtonhuang opened this issue Dec 9, 2020 · 0 comments
Open

leetcode算法 #24

mtonhuang opened this issue Dec 9, 2020 · 0 comments

Comments

@mtonhuang
Copy link
Owner

leetcode刷题心得分享

博主在刷leetcode时认为还不错的题目,大部分有发布个人题解(貌似反响还可以~),在此记录心得并且分享给大家(以下排序不分先后,并在代码里附带了本人leetcode链接,欢迎大家踩踩)[以下题目都来自leetcode,本人题解]

369. 两个数组的交集

给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]

~ 解题思路:

  • 妙用includes和set方法
/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var intersection = function(nums1, nums2) {
    let arr = [];
    for(let i = 0; i < nums1.length; i++) {
        if (nums2.includes(nums1[i])) {
            arr.push(nums1[i]);
        }
    }
    return Array.from(new Set(arr))
};
作者:mtonhuang
链接:https://leetcode-cn.com/problems/intersection-of-two-arrays/solution/includessettou-lan-jie-fa-by-mtonhuang/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1464. 数组中两元素的最大乘积

给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。

请你计算并返回该式的最大值。

示例:
输入:nums = [3,4,5,2]
输出:12
解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1)(nums[2]-1) = (4-1)(5-1) = 3*4 = 12

~ 解题思路:

  • 求出最大值a
  • 删除a
  • 再求出最大值b
  • 进而求出答案
/**
 * @param {number[]} nums
 * @return {number}
 */
var maxProduct = function (nums) {
    let a = Math.max(...nums);
    nums.splice(nums.indexOf(a), 1, '');
    let b = Math.max(...nums);
    return (a - 1) * (b - 1)
};
作者:mtonhuang
链接:https://leetcode-cn.com/problems/maximum-product-of-two-elements-in-an-array/solution/miao-yong-mathmaxspliceindexof-by-mtonhuang/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

面试题 08.05. 递归乘法

递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。

示例1:

输入:A = 1, B = 10
输出:10
示例2:

输入:A = 3, B = 4
输出:12

~ 解题思路:

  • 不用递归的方法
/**
 * @param {number} A
 * @param {number} B
 * @return {number}
 */
var multiply = function (A, B) {
    let res = 0;
    for(let i = 0; i < B; i++) {
        res+= A
    }
    return res;
};

作者:mtonhuang
链接:https://leetcode-cn.com/problems/recursive-mulitply-lcci/solution/mnben-zhi-jiu-shi-mnci-m-by-mtonhuang/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant