找出整型数组中乘积最大的三个数
给定一个包含整数的无序数组,要求找出乘积最大的三个数。
思路:先对数组进行排序,取最后三个数值的乘积
var unsorted_array = [-10, 7, 29, 30, 5, -10, -70];computeProduct(unsorted_array); // 21000function sortIntegers(a, b) {return a - b;}function computeProduct(unsorted) {var sorted_array = unsorted.sort(sortIntegers),product1 = 1,product2 = 1,array_n_element = sorted_array.length - 1;for (var x = array_n_element; x > array_n_element - 3; x--) {product1 = product1 * sorted_array[x];}product2 = sorted_array[0] sorted_array[1] sorted_array[array_n_element];if (product1 > product2) return product1;return product2};
数组去重
给定某无序数组,要求去除数组中的重复数字并且返回新的无重复数组。
// ES6 Implementationvar array = [1, 2, 3, 5, 1, 5, 9, 1, 2, 8];Array.from(new Set(array));// [1, 2, 3, 5, 9, 8]// ES5 Implementationvar array = [1, 2, 3, 5, 1, 5, 9, 1, 2, 8];uniqueArray(array);// [1, 2, 3, 5, 9, 8]function uniqueArray(array) {var hashmap = {};var unique = [];for(var i = 0; i < array.length; i++) {if(!hashmap.hasOwnProperty([array[i]])) {hashmap[array[i]] = 1;unique.push(array[i]);}}return unique;}
两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。
var intersection = function(nums1, nums2) {// let arr = []// let map = null// for (let i = 0 ; i < nums1.length; i++) {// if (nums2.includes(nums1[i]) && nums1[i] !== map) {// arr.push(nums1[i])// map = nums1[i]// }// }// return Array.from(new Set(arr))return [...new Set(nums1)].filter(item => nums2.includes(item))};
最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例: 输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
var maxSubArray = function(nums) {let res = nums[0]let sum = 0for (let i = 0; i < nums.length; i++) {// 如果sum加上当前nums[i]比原sum更大,就加。// 否则就是比原sum更小,以当前nums[i]为子序列头重新算sum//但是记住要每一阶段的sum都要用res来比较一下,留下最大的sum。if (sum > 0) {sum += nums[i]} else {sum = nums[i]}res = Math.max(res, sum)}return res}
