javascript:求绝对值最小的数

article/2025/10/4 5:34:22

问题来源:http://androidguy.blog.51cto.com/974126/1129543
有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。

问题分解:

第一步:二分法寻找改变符号的位置(0视为正数)

第二步:比较位置左右数字的绝对值大小,取较小的那一个

 
  1. <script language="javascript">  
  2. var getBound = function(a,fr,to){  
  3.     //[fr,to]是候选位置区间,位置从0开始计数  
  4.     var b=fr,f=fr,t=to,s=true;  
  5.     var left=function(b){return a[b-1];};//获取该位置右边的数字,增加代码可读性  
  6.     var right=function(b){return a[b];};//获取该位置左边的数字,增加代码可读性  
  7.     if(a.length===0){  
  8.         return -1;//数组为空,返回-1  
  9.     }else{  
  10.         if(right(b)>=0){  
  11.             s=false;//初始化位置就是要找的位置  
  12.         }else{  
  13.             for(var i=1;i<=100 && s;i++){  
  14.                 b=f+Math.ceil((t-f)/2);//找到中点  
  15.                 if(right(b)===undefined||(left(b)<0 && right(b)>=0)){  
  16.                     s=false;//中点就是要找的位置  
  17.                 }else if(right(b)<0){  
  18.                     f=b;//下次前进找中点  
  19.                 }else{  
  20.                     t=b;//下次后退找中点  
  21.                 }  
  22.             }  
  23.         }  
  24.         return b;  
  25.     }  
  26. };  
  27. var getMinAbs = function(a){  
  28.     var b=getBound(a,0,a.length);//获取位置  
  29.     if(b>=0){  
  30.         if(b===0){  
  31.             return Math.abs(a[b]);//位置在最左边  
  32.         }else if(b===a.length){  
  33.             return Math.abs(a[b-1]);//位置在最右边  
  34.         }else{  
  35.             return (Math.abs(a[b])>Math.abs(a[b-1])?Math.abs(a[b-1]):Math.abs(a[b]));//位置在中间  
  36.         }  
  37.     }else{  
  38.         return false;  
  39.     }  
  40. };  
  41.  
  42. //测试代码  
  43. var myArray=[-20,-13,-4,0,0,0,6,77,200,201,202];  
  44. alert("[" + myArray + "]: " + getMinAbs(myArray));  
  45. var myArray=[];  
  46. alert("[" + myArray + "]: " + getMinAbs(myArray));  
  47. var myArray=[-1];  
  48. alert("[" + myArray + "]: " + getMinAbs(myArray));  
  49. var myArray=[1];  
  50. alert("[" + myArray + "]: " + getMinAbs(myArray));  
  51. var myArray=[0,0];  
  52. alert("[" + myArray + "]: " + getMinAbs(myArray));  
  53. var myArray=[-1,-1];  
  54. alert("[" + myArray + "]: " + getMinAbs(myArray));  
  55. </script> 

 以myArray=[-20,-13,-4,0,0,0,6,77,200,201,202]为例,测试弹出:






 本文转自 hexiaini235 51CTO博客,原文链接:http://blog.51cto.com/idata/1131865,如需转载请自行联系原作者



http://chatgpt.dhexx.cn/article/HI2q16HG.shtml

相关文章

力扣 -----最小绝对值(JavaScript解法)

一、题目描述 二、示例 三、解题思路 先进行一个排序&#xff0c;然后使用双指针&#xff0c;依次进行比较&#xff0c;将比较的值进行存储&#xff0c;最小值改变的话&#xff0c;数组置空&#xff0c;最小值改变&#xff0c;如果和最小值相等的话直接push。我刚开始写的排序…

python3 绝对值_python3对序列求绝对值

原博文 2018-11-08 11:27 − http://www.cnblogs.com/itdyb/p/5731804.html 一开始我是这样写的&#xff0c;据说这样写python2是可以的&#xff1a; myList [-1,2,-3,4,-5,6]absList map(abs, myList) &... 0 1936 相关推荐 2019-12-23 10:33 − ## Python3使用sud…

【前端】JavaScript基础(二)

目录 一、内置对象 Math对象 Data日期 数组对象 字符串对象 字符串的不可变 根据字符返回位置 根据位置返回字符&#xff08;重点&#xff09; 字符串基本方法&#xff08;重点&#xff09; 字符串的替换与转换 二、简单类型和复杂类型 简单类型传参 复杂类型传参 一、内…

LeetCode 任意子数组和绝对值的最大值(JavaScript)

这道题目&#xff0c;我是通过看题解&#xff0c;然后通过自己思考才写出来的&#xff0c;第一次写博客&#xff0c;如果有不好之处&#xff0c;请谅解。 写这个题目之前&#xff0c;我们先了解一下前缀和&#xff0c;通过下面例子&#xff0c;或许你就明白了什么是前缀和了。…

常用JavaScript控制结构语句,绝对值,累加,阶乘,循环

计算一个数的绝对值 function abs(x) {if (x > 0) {return x;} else {return -x;} } console.log(abs(10) abs(-10)); //>true计算数组元素之和 let arr [1, 3, 5];function sum(array) {let sum 0;for (let x of array) { //循环数组把每个元素赋给xsum x;}return…

02-Node.js基础(一)

目录 一、什么是Node.js二、Node.js在软件架构中的地位三、Node.js 可以做什么&#xff08;作用&#xff09;浏览器端的 JavaScriptNode端的JavaScript 四、Node.js APIsWeb端APINode.js端APIWeb端JS与Node端JS对比 五、安装 Node.js第一步&#xff1a;在官网下载 Node.js 安装…

vue取绝对值

先放效果&#xff1a; 代码 <template><el-input v-model"num" placeholder"请输入数字" /><el-button type"primary" click"changeNum">取绝对值</el-button> </template> import { ref } from &quo…

关于JSZIP压缩图片打包下载的一些用法

功能介绍 前端在处理一些批量文件或者图片时候&#xff0c;通过使用异步上传&#xff0c;减少表单一次性提交的的数据量。并将这些图片或者文件根据用户自定义压缩、分类保存到本地。是一个用于压缩文件和解压的JavaScript库。 官网地址 https://stuk.github.io/jszip/docume…

jsZip将多个文件压缩成一个压缩包

在项目开发中&#xff0c;搭档大佬要做一个断点续传的功能&#xff0c;让我帮忙研究一下前端将多个文件压缩成一个压缩包的方法&#xff0c;所以就有了这篇文章。 我的demo是写在vue中的&#xff0c;所以首先要有一个vue环境&#xff0c;才能进行接下来的步骤。那么下面我们就…

前端vue使用jszip压缩文件

一.引入element的上传文件组件 <el-form-item label"文件"><el-uploadclass"upload-demo"dragaction"https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"multiple:before-upload"beforeUpload"><el-icon …

vue3中使用jszip压缩文件

1、安装依赖 npm install jszip npm install file-saver --save 2、使用 <template><el-card class"mb15"><template #header><span>jszip</span></template><!-- 二维码容器 --><div id"qrCodeBox">&…

docxtemplater、pizzip、jszip-utils、file-saver 前端实现导出word

一、准备工作 1、插件安装&#xff1a; npm i docxtemplater pizzip jszip-utils file-saver -S2、安装完成&#xff1a; 3、导出的模板文件。 我这里是将其命名word-export.docx,并将其放在public/docxs目录下&#xff0c;如图所示&#xff1a; 二、实现代码 页面使用&…

【sduoj】前端JSZip库的使用

2021SCSDUSC 文章目录 JSZIP安装使用引入实例化读取zip文件读取压缩包中的文件遍历压缩包内的所有文件&#xff08;单层&#xff09; 小结 JSZIP JSZip是一个用于创建、读取和编辑.zip文件的javascript库&#xff0c;具有好用而简单的 API。 安装 在sduoj项目中&#xff0c…

zipJS 前端压缩使用

前端在处理文件时&#xff0c;对于大文件或者多个文件上传、下载、编辑&#xff0c;直接使用原文件不方便&#xff0c;最近使用一个可以前端中处理 zip 文件的库&#xff0c;JSzip&#xff0c;主要功能&#xff1a;前端中压缩、解压缩、编辑zip文件。 在 nodeJS 中&#xff0…

一篇文章介绍JSZip预览压缩包中的文件

安装依赖 npm i jszip 前提准备 准备好一个压缩包&#xff0c;格式为zip&#xff0c;存放两张png图片。 代码实现 <template><h1>JSZip,预览压缩包中的文件</h1><img v-for"(n,m) in picArr.arr":src"n":style"{width:200px}&qu…

VUE+jszip实现下载多个文件导出为一个zip格式

项目需求&#xff1a;将多个文件/图片导出为一个zip格式压缩包&#xff0c;点击<下载全部附件>按钮下载上面三个文件 1、安装jszip和file-saver插件 npm install jszip npm install file-saver2、在所需页面引入 import JSZip from "jszip";import FileSaver …

前端js使用jszip实现文件压缩功能

一、jszip下载 1、github下载地址&#xff1a;https://github.com/Stuk/jszip 2、下载成功后解压&#xff0c;js插件在dist目录里 二、引入jszip插件 <script type"text/javascript" src"./jszip.min.js"></script> 三、使用jszip对文件进…

JSZip 的简单介绍

1、前言 前端处理一些批量文件或者图片时候&#xff0c;通过使用异步上传&#xff0c;减少表单一次性提交的的数据量。但是图片或者文件有删除的时候&#xff0c;服务器上真实的图片不容易删除。找了一些资料发些了JSZip这个技术&#xff0c;可以将文件或者图片打包成一个Zip文…

vue前端下载——jszip压缩和解压,结合file-saver导出图片zip,每20个图片分一个目录

使用jszip和file-saver导出图片&#xff0c;并打包为zip&#xff1a; import JSZip from "jszip"; import FileSaver from "file-saver"; 一&#xff0c;jszip解压缩 使用loadAsync&#xff0c;zipFile为压缩包&#xff0c;下面的例子表示读取zip中的resul…

Nginx工作原理和优化总结。

NGINX以高性能的负载均衡器&#xff0c;缓存&#xff0c;和web服务器闻名&#xff0c;驱动了全球超过 40% 最繁忙的网站。在大多数场景下&#xff0c;默认的 NGINX 和 Linux 设置可以很好的工作&#xff0c;但要达到最佳性能&#xff0c;有些时候必须做些调整。首先我们先了解其…