力扣 -----最小绝对值(JavaScript解法)
一、题目描述
二、示例
三、解题思路
先进行一个排序,然后使用双指针,依次进行比较,将比较的值进行存储,最小值改变的话,数组置空,最小值改变,如果和最小值相等的话直接push。我刚开始写的排序是
四、代码
/*** @param {number[]} arr* @return {number[][]}*/
var minimumAbsDifference = function(arr) {arr1 = quickSort(arr)//这里的排序也可以用sort()但是因为时间空间复杂度 太高 就用了快排var arrs = []var left = 0,right = 1var min = 999999while (right < arr.length - 1) {for (let i = 0; i < arr.length; i++) {var temp = arr1[right] - arr1[left]if (temp < min) {arrs = []arrs.push([arr1[left], arr1[right]])min = temp} else if (temp === min) {arrs.push([arr1[left], arr1[right]])}left++;right++}}return arrs
};quickSort = (array) => {const sort = (arr, left = 0, right = arr.length - 1) => {if (left >= right) { //如果左边的索引大于等于右边的索引说明整理完毕return}let i = leftlet j = rightconst baseVal = arr[j] // 取无序数组最后一个数为基准值while (i < j) { //把所有比基准值小的数放在左边大的数放在右边while (i < j && arr[i] <= baseVal) { //找到一个比基准值大的数交换i++}arr[j] = arr[i] // 将较大的值放在右边如果没有比基准值大的数就是将自己赋值给自己(i 等于 j)while (j > i && arr[j] >= baseVal) { //找到一个比基准值小的数交换j--}arr[i] = arr[j] // 将较小的值放在左边如果没有找到比基准值小的数就是将自己赋值给自己(i 等于 j)}arr[j] = baseVal // 将基准值放至中央位置完成一次循环(这时候 j 等于 i )sort(arr, left, j - 1) // 将左边的无序数组重复上面的操作sort(arr, j + 1, right) // 将右边的无序数组重复上面的操作}const newArr = array.concat() // 为了保证这个函数是纯函数拷贝一次数组sort(newArr)return newArr}
五、结果
力扣 -----最小绝对值(JavaScript解法)相关推荐
- 力扣的组合总和解法 (Python)
力扣的组合总和解法 题目描述: 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidat ...
- 当数字遇上奇思妙想:探究力扣“最小偶倍数”解题思路
本篇博客会讲解力扣"2413. 最小偶倍数"的解题思路,这是题目链接. 先来审题: 以下是输出示例: 以下是提示: 这道题最简单的思路是:奇数和2的最小公倍数是这个奇数的2倍,偶数 ...
- 买卖股票的最佳时机——力扣121题
买卖股票的最佳时机--力扣121题 暴力解法 从前往后,不断将元素之间进行两两比较(类似冒泡排序中),然后不断更新出maxProfit的值.例如数组[7,1,5,3,6,4]中,从7开始,则7 -&g ...
- 力扣209-长度最小的子数组(Java,双指针解法)
209. 长度最小的子数组 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/minimum-size-subarray ...
- 力扣编程题-解法汇总
一.力扣链接: 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 备注:以后每个工作日从前往后刷一道题,然后再加一道每日新题.每天两道题. 二.模版: 标题: 力扣解法汇总5-正则表达 ...
- LeetCode力扣(27. 移除元素)----Java/JavaScript/C
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组. ...
- 力扣 二叉搜索树的最小绝对差
力扣 二叉搜索树的最小绝对差 题目描述 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值. 示例: 输入: 1 3 / 2 输出: 1 解释: 最小绝对差为 1,其中 ...
- 长度最小的子数组(力扣209)
长度最小的子数组(力扣209) 给定一个含有 n 个正整数的数组和一个正整数 target . 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, -, ...
- 力扣解法汇总720-词典中最长的单词
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms https://g ...
最新文章
- 决赛评委阵容重磅公布!6万大奖,超分辨率图像性能挑战赛最后召集令!
- Nginx Rtmp Module - HLS切片和级联播放
- MappedByteBuffer VS FileChannel 孰强孰弱?
- integer expression expected或者unary operator expected
- 在PhpStorm中管理GitHub代码仓库的使用方法
- Python websocket
- 计算机桌面不来回变黑,电脑屏幕变小了左右黑几种解决方法
- 百度网盘链接提取码接口实现
- python 爬取google总结
- 微信对账单 java_微信下载对账单
- Quixel bridge无法导入到blender
- seedlab:V** tunneling The Container Version
- 人民的名义1-55集全 已看完(观后感)
- 怎么去掉视频上的水印?快速去除水印或字幕的大神技巧
- Ratatype - 在线打字教程,提高打字速度
- 幼儿教师个人简历模板范文
- 谁该承担中国SaaS贫瘠生态的一点责任
- Qt 静态编译支持GUI(含qxcb)
- wifi上网实现智能家居,三选一
- 写一篇关于5G网络的论文
热门文章
- 微软报告:GPT-4可以算早期AGI/ 百图生科发布AI生成蛋白质平台/ Arm寻求上调芯片设计价格…今日更多新鲜事在此...
- Excel撤销工作表保护方法(Excel无法调节列宽解决办法)
- 2019.12.13学习记录
- 淘宝店铺评价影响店铺数据的哪些方面,如何拯救
- 嵌入式Linux开发调优之一:系统与内核
- 红外传感器模块与 Arduino 连接
- 算法导论NO.1:算法基础
- 批处理命令 for /F 参数命令
- 【转】黄聪:Scrapy 轻松定制网络爬虫
- centos7本地yum源配置