array

LeetCode 167. Two Sum II - Input array is sorted (Easy)

…衆ロ難τιáo~ 提交于 2019-12-29 15:14:23
Description: Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Note: Your returned answers (both index1 and index2) are not zero-based. You may assume that each input would have exactly one solution and you may not use the same element twice. Example: Input: numbers = [2,7,11,15], target = 9 Output: [1,2] Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 =

冒泡排序三种方法

喜欢而已 提交于 2019-12-29 13:02:35
冒泡排序基础用法    import java.util.Arrays; public class BubbleSort { public static void main(String[] args) { int[] array = new int[] {5,8,6,3,9,2,1,7}; sort(array); System.out.println(Arrays.toString(array)); } public static void sort(int array[]){ for (int i = 0; i < array.length-1; i++) { for (int j = 0; j < array.length - i - 1; j++) { int tmp=0; if (array[j]>array[j+1]){ tmp=array[j]; array[j]=array[j+1]; array[j+1]=tmp; } } } } } 冒泡排序优化第二版   与第一版代码相比,第二版代码做了小小的改动,利用一个Boolean作为标记。如果在本轮排序中,元素有交换,则说明数列无序;如果没有元素交换,则说明数列已经有序,然后直接跳出大循环。 import java.util.Arrays; public class GoodBubbleSort { public

数字技术问题

雨燕双飞 提交于 2019-12-28 19:03:20
数字计数问题 一本书的页码从自然数 1 开始顺序编码到 N (N≥100000)。页码按照通常的习惯编 排,即每个页码不能含多余的前倒数 0,例如,、第 6 页的页码为 6,不能是 06、006 等。 数字计数问题要求从键盘输入页数 N,输出全书页码中分别用到 0、1、2、3、4、5、6、 7、8、9 的次数。 import java . util . Arrays ; import java . util . Scanner ; public class NumberCount { public static void main ( String [ ] args ) { Scanner sc = new Scanner ( System . in ) ; int num = sc . nextInt ( ) ; sc . close ( ) ; int [ ] count = solve ( num ) ; for ( int i = 0 ; i <= 9 ; i ++ ) { System . out . print ( "数字" + i + "用到了:" ) ; System . out . println ( count [ i ] + "次" ) ; } } public static int [ ] solve ( int num ) { int [ ] count

面试官连环追问:数组拍平(扁平化) flat 方法实现

久未见 提交于 2019-12-28 17:51:54
前言 前段时间秋招面哔哩哔哩的时候,面试官问:如何实现 flat 方法?当时手写的并不完美,后来回盘复习,发现面试要求手写数组拍平(扁平化) flat 方法的面试官不在少数。其中包括:拼多多、小米、美团、滴滴、shopee、有赞等。手写 flat 方法是一道非常基础的面试题,通常出现在笔试或者第一轮面试当中,主要考察基本的手写代码的能力。今天就从了解 flat 特性到实现 flat 再到接住面试官的连环追问重新学习一遍数组拍平(扁平化) flat 方法吧。 Github 戳我 一段代码总结 Array.prototype.flat() 特性 注:数组拍平方法 Array.prototype.flat() 也叫数组扁平化、数组拉平、数组降维。 本文统一叫:数组拍平 const animals = [ "🐷" , [ "🐶" , "🐂" ] , [ "🐎" , [ "🐑" , [ "🐲" ] ] , "🐛" ] ] ; // 不传参数时,默认“拉平”一层 animals . flat ( ) ; // ["🐷", "🐶", "🐂", "🐎", ["🐑", ["🐲"]], "🐛"] // 传入一个整数参数,整数即“拉平”的层数 animals . flat ( 2 ) ; // ["🐷", "🐶", "🐂", "🐎", "🐑", ["🐲"], "🐛"] // Infinity

ES6 新增set方法

假如想象 提交于 2019-12-28 16:21:55
var arr = [1,2,3,3,2,1,4,5]; // 实例化时传入数组 var s = new Set([...arr]); // set数组长度 console.log(s.size) // 判断是否存在 console.log(s.has(1)) // 删除一项 s.delete(2); console.log(s.has(2)) // 使用扩展运算符生成数组 // console.log([...s]); // 使用Array.from生成数组 var a = Array.from(s); console.log(a); // 去除数组重复成员 函数 function dedupe(array) { return [...new Set(array)]; // return Array.from(new Set(array)); } var aaa = dedupe([1,2,2,3,4,5,5,5,5,6,6,6,6,7,7,7]); var bbb = [...new Set([1,2,2,3,4,5,5,5,5,6,6,6,6,7,7,7])]; console.log(aaa,bbb) // 实现 两个数组 求全集 求交集 求差集 var a = [1,2,3,4]; var b = [3,4,5,6]; // 全集 [1,2,3,4,5,6] 交集 [3

剑指Offer

大城市里の小女人 提交于 2019-12-28 15:59:25
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 每行二分 class Solution { public: bool Find(int target, vector<vector<int> > array) { for( int i = 0 ; i < array.size() ; i++ ){ int len = array[i].size(); int pos = lower_bound(array[i].begin(),array[i].end(),target)-array[i].begin(); if( pos < len && target == array[i][pos] ) return true ; } return false; } }; 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 从后往前遍历,移动 class Solution { public: void replaceSpace(char *str,int length) { int c = 0 ; for( int i = 0

Java排序算法之快速排序

牧云@^-^@ 提交于 2019-12-28 04:12:06
一、算法原理   基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(low指向起始位置,high指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换low和high位置的值,然后从前半部分开始扫秒,发现有元素大于基准点的值,就交换low和hi位置的值,如此往复循环,直到low>=high,然后把基准点的值放到hi这个位置。一次排序就完成了。以后采用递归的方式分别对前半部分和后半部分排序,当前半部分和后半部分均有序时该数组就自然有序了。 二、算法举例 三、算法实现   1 /** 2 * 查找出中轴(默认是最低位low)的在numbers数组排序后所在位置 3 * 4 * @param array 待查找数组 5 * @param lo 开始位置 6 * @param hi 结束位置 7 * @return 中轴所在位置 8 */ 9 static int getMiddle(int []array,int lo,int hi) { 10 //固定的切分方式 11 int key=array[lo]; 12 while(lo<hi){ 13 //从后半部分向前扫描 14 while(array[hi]>=key&&hi>lo){ 15 hi--;

交换排序:冒泡排序与快速排序

蓝咒 提交于 2019-12-28 04:07:53
冒泡排序:废话不多说,直接上代码,注意2中冒泡方法的不同。 package com.sqtds.algorithm.sort;/** * User: sqtds * Date: 13-1-15 * Time: 下午3:03 */public class Bubble { public static void sort(int[] array){ int i ,j ; for (i =0 ; i< array.length ; i++){ for(j=i ; j<array.length ; j++){ if(array[i]>array[j]){ swap(array,i,j); } } } } public static void swap(int[] array , int left , int right){ int temp = array[left]; array[left] = array[right]; array[right] = temp; } public static void BubbleSort(int[] array) { //R(l..n)是待排序的文件,采用自下向上扫描,对R做冒泡排序 int i,j,t; Boolean exchange; //交换标志 for(i=0;i<array.length;i++){ //最多做n-1趟排序

PHP常用处理数组函数

自作多情 提交于 2019-12-28 03:24:30
PHP里面有强大的关于数组列表处理的函数,下面我们就来梳理一些常用的数组处理的函数 1、 array_merge( a r r a y , array, a r r a y , array …) {return array}依次拼接数组 //代码 $array1=array(1,2,3,4,5); $array2=array(6,7,8,9,10); $array3=array_merge($array1,$array2);//拼接 print_r($array3); //运行结果 Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 ) 如果我们继续到后面追加array,他讲会继续追加在数组中 //代码 $array1=array(1,2,3,4,5); $array2=array(6,7,8,9,10); $array3=array(11,12,13,14,15); $array4=array_merge($array1,$array2,$array3);//拼接 print_r($array4); //运行结果 Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5[5] => 6

测试开发基础知识-常见算法

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-28 02:29:24
测试开发基础知识-常见算法 常见排序 dubble sort(冒泡算法)从小到大 //冒泡排序java实现 public class sort { public static void bubbleSort ( int array [ ] ) { for ( int i = 0 ; i < array . length - 1 ; i ++ ) { for ( int j = 0 ; j < array . length - i - 1 ; j ++ ) { int tmp = 0 ; if ( array [ j ] > array [ j + 1 ] ) { tmp = array [ j ] ; array [ j ] = array [ j + 1 ] ; array [ j + 1 ] = tmp ; } } } } public static void main ( String [ ] args ) { int [ ] array = new int [ ] { 5 , 8 , 10 , 2 , 4 , 7 , 5 , 5 , 3 , 9 } ; bubbleSort ( array ) ; System . out . println ( Arrays . toString ( array ) ) ; } } 排序算法非常简单,使用双循环进行排序