数组

1057. Stack (30)

大兔子大兔子 提交于 2020-03-27 07:20:15
1.本题的中间三个测试点非常容易超时 2.需要采用树状数组+二分法 树状数组:能够在o(logn)的时间内进行对a[i]操作和统计a[0]+a[1]+a[2]+...a[i]的操作。 我们把a[i]记录为i的出现次数,那么统计sum=a[0]+a[1]+a[2]+...a[i],就可以知道小于等于i的元素出现的次数。而PeekMedian操作中,是求n/2或者(n+1)/2的元素,即当sum等于n/2或者(n+1)/2时,i就是我们需要输出的元素 3.利用树状数组,能够快速统计sum,利用二分法,能够快速定位i 4.后续优化:可以考虑采用一个数组实现stack的功能,int stack[N]; int stackTop=0;//既是栈顶元素在stack数组的位置,也是栈内元素的总个数,push操作:stack[++stackTop]=x, pop操作:stack[stackTop--]. //#include<string> //#include<stack> //#include<unordered_set> //#include <sstream> //#include "func.h" //#include <list> #include <iomanip> #include<unordered_map> #include<set> #include<queue>

数组的快速排序

我们两清 提交于 2020-03-27 07:00:32
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var arr = [1, 2, 4, 5, 7, 10] //快速排序 //你有一堆硬币,硬币上的年份不同,你现在要把硬币按年号排好 //第一步:你拿出年份大概是年份区域的二分之一的一个硬币(就是计算机拿出的数组第一个) //第二步:将其余每个硬币与这个硬币的年份对比,大于这个硬币年份的放右边,小于的放左边 //这样你就得到了两堆硬币,一堆是小于你选硬币年份的,一堆是大于你选硬币年份的 //第三步:将这左右两堆硬币分别当成刚开始的那堆硬币,然后再选出年份大概是年份区域的二分之一的一个硬币 //第四步:(假设我选的是左侧的一堆硬币),然后重复第二步,又得到两堆硬币 //第五步:(再选取左边的一堆硬币),重复第一步,第二 步,第三步 //硬币的数量是有限的,一个硬币只有一个年份,不可能一个硬币分两半,所以当那一堆硬币就是一个硬币时就等于你已经将这堆分完毕 //对人来说这样做很累很烦,但是对电脑来说只要是重复的事就可以运行相同的代码,很快就能解决 function quickSort (arr) { if (arr.length <= 1) { return arr; } /

JavaScript在HTML中的应用

限于喜欢 提交于 2020-03-27 06:48:56
JavaScript概述 JavaScript是基于对象和事件驱动的脚本语言,主要应用在客户端。 特点: 1,交互性(它可以做的就是信息的动态交互) 2,安全性(不允许直接访问本地硬盘) 3,跨平台性(只要是可以解释JS的浏览器都可以执行,和平台无关) JavaScript与Java不同 1,JS是Netscape公司的产品,前身是LiveScript;Java是Sun公司的产品,现在是Oracle公司的产品 2,JS是基于对象,Java是面向对象 3,JS只需解释就可以执行,Java需要先编译成字节码文件,再执行 4,JS是弱类型,Java是强类型 JavaScript与Html的结合方式 想要将其他代码融入到Html中,都是以标签的形式。 1,JS代码存放在标签对<script> js code... </script>中。 2,当有多个html页面使用到相同的JS脚本时,可以将JS代码封装到一个文件中,只要在script标签的src属性引入一个JS文件。(方便后期维护、扩展) 注意:如果在script标签中定义了src属性,那么标签中的内容不会被执行。 例:<script src="test.js" type="text/javascript"></script> 注:规范中script标签早期有一个属性language,而现在使用type属性。 JavaScript语法

JavaScript-排序

删除回忆录丶 提交于 2020-03-27 06:47:47
一、方法   sort():这个是用于数组排序,里面可以传一个参数的,参数也可以是函数   parseInt(): 可解析一个字符串,并返回一个整数   reverse():逆向排序,跟sort()是死对头   replace(): 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。 二、数组 创建数组的语法:    1、 var arr=[值1,值2,值3]; //隐式创建        var arr1 = [1,3,5,7,9];        document.write(arr1[2] + '<br>');    2、var arr=new Array(值1,值2,值3); //直接实例化       var arr2 = new Array(2,4,6,8,10);       document.write(arr2[3] + '<br>');    3、var array=new Array(size); //创建数组并指定长度       var arr3 = new Array(3);//固定数组长度为3       arr3[0] = 1;       arr3[1] = 2;       arr3[2] = 3;       document.write(arr3[2] + '<br>'); !!! - CSS <input type=

ES6之数组扩展方法【一】(相当好用)

被刻印的时光 ゝ 提交于 2020-03-27 05:25:20
form 转化为真正的数组 先说一下使用场景,在Js中,我们要经常操作DOM,比如获取全部页面的input标签,并且找到类型为button的元素,然后给这个按钮注册一个点击事件,我们可能会这样操作; var inputObjs=document.getElementsByTagName('input'); for(var i=0;i<inputObjs.length;i++){ if(inputObjs[i].type==='button'){ inputObjs[i].onclick=function(){ return; } } } 这样写肯定是没有问题的,但是我们知道很多操作数组的方法比 for 循环好用多了,比如 es5 的 forEach 方法就很好用;但是能直接用吗?不能!因为 dom 对象集合不是一个真正得 Array 数组类型,直接使用会报错的; var inputObjs=document.getElementsByTagName('input'); inputObjs.forEach(); //inputObjs.forEach is not a function 尽管如此我们还是可以用,不能直接用可以间接用,使用js强大的对象冒充功能即可; var inputObjs=document.getElementsByTagName('input');

Javascript 连接两个数组

牧云@^-^@ 提交于 2020-03-27 05:21:47
JS合并两个数组的方法 我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况。比如: var a = [1,2,3]; var b = [4,5,6]; 有两个数组a、b,需求是将两个数组合并成一个。方法如下: 1、concat js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果。 var c = a.concat(b);//c=[1,2,3,4,5,6]; 这里有一个问题,concat方法连接a、b两个数组后,a、b两个数组的数据不变,同时会返回一个新的数组。这样当我们需要进行多次的数组合并时,会造成很大的内存浪费,所以这个方法肯定不是最好的。 2、for循环 大概的思路是:遍历其中一个数组,把该数组中的所有元素依次添加到另外一个数组中。直接上代码: for(var i in b){ a.push(b[i]); } 这样的写法可以解决第一种方案中对内存的浪费,但是会有另一个问题:丑!这么说不是没有道理,如果能只用一行代码就搞定,岂不快哉~ 3、apply 函数的apply方法有一个特性,那就是func.apply(obj,argv),argv是一个数组。所以我们可以利用这点,直接上代码: a.push.apply(a,b); 调用a.push这个函数实例的apply方法,同时把,b当作参数传入,这样a

两个数组合并的方法

爱⌒轻易说出口 提交于 2020-03-27 05:21:15
// ES5的写法 var arr1 = [0, 1, 2]; var arr2 = [3, 4, 5]; Array.prototype.push.apply(arr1, arr2); // ES6的写法 var arr1 = [0, 1, 2]; var arr2 = [3, 4, 5]; arr1.push(...arr2); 两个数组合并的方法: 我们在项目过程中,有时候会遇到需要将 两个数组合并成为一个 的情况。   比如: var a = [1,2,3]; var b = [4,5,6]; 有两个数组a、b,需求是将两个数组合并成一个。方法如下: 1、concat js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果。 var c = a.concat(b);//c=[1,2,3,4,5,6] 这里有一个问题,concat方法连接a、b两个数组后,a、b两个数组的数据不变,同时会返回一个新的数组。这样当我们需要进行多次的数组合并时,会造成很大的内存浪费,所以这个方法肯定不是最好的。 2、for循环 大概的思路是:遍历其中一个数组,把该数组中的所有元素依次添加到另外一个数组中。直接上代码: for(var i in b){ a.push(b[i]); } 这样的写法可以解决第一种方案中对内存的浪费,但是会有另一个问题:丑

js合并两个数组的方法

旧巷老猫 提交于 2020-03-27 05:19:53
我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况。比如: var a = [1,2,3]; var b = [4,5,6]; 有两个数组a、b,需求是将两个数组合并成一个。方法如下: 1、concat js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果。 var c = a.concat(b);//c=[1,2,3,4,5,6]; 这里有一个问题,concat方法连接a、b两个数组后,a、b两个数组的数据不变,同时会返回一个新的数组。这样当我们需要进行多次的数组合并时,会造成很大的内存浪费,所以这个方法肯定不是最好的。 2、for循环 大概的思路是:遍历其中一个数组,把该数组中的所有元素依次添加到另外一个数组中。直接上代码: for(var i in b){   a.push(b[i]); } 这样的写法可以解决第一种方案中对内存的浪费,但是会有另一个问题:丑!这么说不是没有道理,如果能只用一行代码就搞定,岂不快哉~ 3、apply 函数的apply方法有一个特性,那就是func.apply(obj,argv),argv是一个数组。所以我们可以利用这点,直接上代码: a.push.apply(a,b); 调用a.push这个函数实例的apply方法,同时把,b当作参数传入,这样a.push这个方法就会遍历b数组的所有元素

写一个字符串反转函数,实现字符串倒序。

吃可爱长大的小学妹 提交于 2020-03-27 05:15:37
第一种方法: <script type="text/javascript"> var str="abcdeg"; function demo(str){ var str2=""; for(var i=0;i<str.length;i++){ str2+=str.charAt(str.length-i-1); } document.write(str+"<br />"+str2) } demo(str); </script> 第二种方法: <input type="textfield" id="input"/> <div id="result"></div> <input type="button" value="reverse" onclick="reverse()"/> <script language="javascript"> function reverse() { var str=document.getElementById("input").value; var a=str.split(''); var result=new Array(); while(a.length) { result.push(a.pop()); } document.getElementById("result").innerHTML=result.join(''); } </script>

jQuery中$.each()方法的使用

左心房为你撑大大i 提交于 2020-03-27 03:42:08
$.each()是对数组,json和dom结构等的遍历,说一下他的使用方法吧。 1、遍历一维数组 var arr1=['aa','bb','cc','dd']; $.each(arr1,function(i,val){ //两个参数,第一个参数表示遍历的数组的下标,第二个参数表示下标对应的值 console.log(i+'```````'+val); 输出的结果为: 0```````aa1```````bb 2```````cc3```````dd 2、遍历二维数组 var arr2=[['aaa','bbb'],['ccc','ddd'],['eee','fff']]; $.each(arr2,function(i,item){ //两个参数,第一个参数表示下标,第二个参数表示一维数组中的每一个数组 console.log(i+'````'+item); 输出的结果为: 0````aaa,bbb1````ccc,ddd2````eee,fff 此时可以对输出的一维数组进行遍历 $.each(item,function(i,val){ //遍历二维数组 console.log(i+'`````'+val); }) 输出的结果为: 0````aaa,bbb 0`````aaa 1`````bbb1````ccc,ddd 0`````ccc 1`````ddd2````eee,fff