arr

常用高阶函数

喜欢而已 提交于 2019-11-30 09:56:30
什么是高阶函数:通俗理解就是一个函数接收另一个函数作为参数,这种函数就称之为高阶函数。 1.map 一次对数组的每一项做相同的处理,返回一个新数组 function pow(x) { return x * x; } var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; var results = arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81] console.log(results); 2.reduce 这个函数必须接收两个参数, reduce() 把结果继续和序列的下一个元素做累积计算 var arr = [1, 3, 5, 7, 9]; arr.reduce(function (x, y) { return x + y; }); // 25 3.filter 用于把 Array 的某些元素过滤掉,然后返回剩下的元素,返回新数组 把一个 Array 中的空字符串删掉,可以这么写: var arr = ['A', '', 'B', null, undefined, 'C', ' ']; var r = arr.filter(function (s) { return s && s.trim(); // 注意:IE9以下的版本没有trim()方法 }); r; // ['A', 'B', 'C']

剑指offer(27)字符串的排列

只谈情不闲聊 提交于 2019-11-30 07:59:53
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 题目分析 这题还算可以,关于全排列,有两种解法,第一种就是递归全排列法,第二种就是回溯法。 递归全排列法: 就是剑指offer上的做法,也比较容易理解,不过挺少人答的也就是 把字符串分为两部分:第一部分为第一个字符,第二部分为第一个字符以后的字符串。 然后接下来求后面那部分的全排列。 再将第一个字符与后面的那部分字符逐个交换 回溯法 也就是利用树去尝试不同的可能性,不断地去字符串数组里面拿一个字符出来拼接字符串,当字符串数组被拿空时,就把结果添加进结果数组里,然后回溯上一层。(通过往数组加回去字符以及拼接的字符串减少一个来回溯。) 代码 回溯法: // 回溯法 function Permutation(str) { let res = []; const pStr = '' ; if (str.length <= 0) return res; arr = str.split(''); // 将字符串转化为字符数组 res = permutate(arr, pStr, res); return res; }

JavaScript Array对象

一个人想着一个人 提交于 2019-11-30 07:48:11
1.数组的常用方法 push(val):数组的末尾添加新的元素,返回操作完成后数组的长度 pop():删除数组最后一个元素,返回被删除的元素 shift():删除数组的第一个元素,返回被删除的元素 unshift(val):数组的开头添加新的元素,返回操作完成后数组的长度 <script> var arr = [1,2,3,4] // 在数组末尾添加元素 arr.push(5) console.log(arr) // [1, 2, 3, 4, 5] // 删除数组最后一个元素 arr.pop() console.log(arr) // [1, 2, 3, 4] // 在数组最前面添加元素 arr.unshift(0) console.log(arr) // [0, 1, 2, 3, 4] // 删除数组的第一个元素 arr.shift() console.log(arr) // [1, 2, 3, 4] </script> 3.数组的遍历 数组遍历可以使用for循环和foreach <script> var arr = [1,2,3,4] // for循环 for(var i=0;i<arr.length;i++){ console.log(arr[i]) } // foreach arr.forEach(function(val,index){ console.log(val

leetcode1

梦想与她 提交于 2019-11-30 06:23:25
5197. 最小绝对差 给你个整数数组 arr ,其中每个元素都 不相同。 请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。 示例 1: 输入:arr = [4,2,1,3] 输出:[[1,2],[2,3],[3,4]] 示例 2: 输入:arr = [1,3,6,10,15] 输出:[[1,3]] 示例 3: 输入:arr = [3,8,-10,23,19,-4,-14,27] 输出:[[-14,-10],[19,23],[23,27]] 提示: 2 <= arr.length <= 10^5 -10^6 <= arr[i] <= 10^6 /** * @param {number[]} arr * @return {number[][]} */ var minimumAbsDifference = function(arr) { let res = []; arr.sort((a, b)=>a-b); let c = Infinity; for(let i=0; i<arr.length-1; i++){ let val = arr[i+1]-arr[i]; if(val<c) { c = val res.length = 0; } if(val === c){ let temp = []; temp.push(arr[i], arr[i+1]); res.push

数组对象与数组对象引用、数组的遍历

风格不统一 提交于 2019-11-30 06:10:45
数组对象与数组对象引用 初始化 1 //数组中是简单类型: 2 int[] arr={3,4,5}; 3 4 int[] arr=new int[3]; 5 arr[0]=3; 6 arr[1]=4; 7 arr[2]=5; 8 9 10 //数组中是引用类型: 11 String[] s={"ab","bc","cd"}; 12 13 String[] s=new String[3]; 14 s[0]=new String("ab"); 15 s[1]=new String("bc"); 16 s[2]=new String("cd"); 来源: https://www.cnblogs.com/liiiiiiiiiiinnnnnnnn/p/11566227.html

数据结构-冒泡排序

ぐ巨炮叔叔 提交于 2019-11-30 06:09:06
1 package com.datastack.search; 2 3 import java.util.Arrays; 4 5 //冒泡排序 6 public class BubSearch { 7 public static void main(String[] args) { 8 int[] arr = {6,1,8,23,3,5,6,9,12}; 9 int temp; 10 for(int i=0; i<arr.length; i++){ 11 for(int j=0; j<arr.length-1-i; j++){ 12 if(arr[j]>arr[j+1]){ 13 temp = arr[j]; 14 arr[j] = arr[j+1]; 15 arr[j+1] = temp; 16 } 17 } 18 } 19 System.out.println(Arrays.toString(arr)); 20 } 21 } 来源: https://www.cnblogs.com/linux777/p/11565994.html

数据结构及算法基础学习笔记

风格不统一 提交于 2019-11-30 06:01:56
1.python数据结构及算法基础学习笔记思维导图 2.程序代码演示 1.链表模型:linklist.py 1 """ 2 功能: 实现单链表的构建和操作 3 4 """ 5 6 # 创建节点类 7 class Node: 8 """ 9 思路 : *自定义类视为节点类,类中的属性为数据内容 10 *写一个next属性,用来和下一个 节点建立关系 11 """ 12 def __init__(self,val,next = None): 13 """ 14 val: 有用数据 15 next: 下一个节点引用 16 """ 17 self.val = val 18 self.next = next 19 20 21 # 链式线性表操作类 22 class LinkList: 23 """ 24 思路 : 生成单链表,通过实例化的对象就代表一个链表 25 可以调用具体的操作方法完成各种功能 26 """ 27 def __init__(self): 28 # 链表的初始化节点,没有有用数据,但是便于标记链表的开端 29 self.head = Node(None) 30 31 # 初始化链表,添加一组节点 32 def init_list(self,list_): 33 p = self.head # p 作为移动变量 34 for i in list_: 35 #

go语言中字符串分割

天大地大妈咪最大 提交于 2019-11-30 05:47:41
go语言中字符串的分割分以下几种: 1、根据空格键进行分割   方法:strings.Fields(s string) []string     s:要分割的字符串     返回结果为[]string   例:   s:=" ab cd ef gh ij kl "       arr:=strings.Fields(s)       fmt.Printf("arr:%q\n",arr)   结果为:arr:["ab" "cd" "ef" "gh" "ij" "kl"]    注: 1、分割结果是不包含空字符串的,比如ab前面有一个空格,kl后面也有一个空格,但是分割的结果为 :["ab" "cd" "ef" "gh" "ij" "kl"],而并非: ["" "ab" "cd" "ef" "gh" "ij" "kl" ""]。分割长度为6,而并非是8     2、如果要分割的字符串有多个连续空格出现的话也会,并不会进行多次分割,例如上例中cd和ef之间出现了多个连续空格,结果为: ["ab" "cd" "ef" "gh" "ij" "kl"],而并非:["ab" "cd" "" "" "" "" "ef" "gh" "ij" "kl"] 2、根据某个字符串对另一个字符串进行分割   方法:strings.Split(s,sep string) []string     s

Java异常处理

会有一股神秘感。 提交于 2019-11-30 04:33:59
异常 Java异常的理解: 在程序中异常的意思就是:在程序执行的过程中,出现的非正常的情况,最终导致jvm的非正常停止。异常本身就是一个类,产生异常就创建类对象并抛出了一个异常对象,Java处理异常的方式就是中断异常。需要注意的是异常指的并不是语法错误,语法错了,编译就不能通过,不会产生字节码文件,更不能运行。 常出现的异常 NullPointerException 空指针异常 ArithmeticException 算数计算异常,如除数为0的情况 ArrayIndexOutOfBoundsException 数组下标越界 ClassCastException 类型强转异常 IllegalArgumentException 参数非法 ClassNotFoundException 在编译时无法找到指定的类 BufferOverflowException 缓存溢出 try…catch… 注意点 一个try块可以对应多个catch块 对不关心的异常采用Expection去接收 先处理子类,再处理父类,子类异常要在父类异常前面 假设有ABC三个异常,若A发生异常,不会执行BC try块尽量避免嵌套 例: public static void main ( String [ ] args ) { int [ ] arr = { 0 } ; People p = null ; try {

IIS AAR - URL Rewrite for reverse proxy - how to send HTTP_HOST

点点圈 提交于 2019-11-30 04:31:58
Trying to use AAR as a reverse proxy in front of several back end IIS servers. One public ip address assigned to the server running IIS/AAR Then outbound URL rewrite rules are setup to redirect to one of several back end servers depending on hostname. Works somewhat, but always returns the back end servers default site (not the one mapped to a hostname) so it looks like the host name (HTTP_HOST) is not getting passed from the proxy server to the back end server. (I've verified bypassing the reverse proxy by editing hosts and the back end server returns the correct site bound to the host header