array

[Algorithm] 189. Rotate Array

瘦欲@ 提交于 2020-02-07 04:44:46
Given an array, rotate the array to the right by k steps, where k is non-negative. Example 1: Input: [1,2,3,4,5,6,7] and k = 3 Output: [5,6,7,1,2,3,4] Explanation: rotate 1 steps to the right: [7,1,2,3,4,5,6] rotate 2 steps to the right: [6,7,1,2,3,4,5] rotate 3 steps to the right: [5,6,7,1,2,3,4] Example 2: Input: [-1,-100,3,99] and k = 2 Output: [3,99,-1,-100] Explanation: rotate 1 steps to the right: [99,-1,-100,3] rotate 2 steps to the right: [3,99,-1,-100] Solution 1: /** * @param {number[]} nums * @param {number} k * @return {void} Do not return anything, modify nums in-place instead. */

js 数组Array

时光总嘲笑我的痴心妄想 提交于 2020-02-07 02:05:38
/** * js中的array */ function myArray() { // 定义myArray,并添加值 var myArray = new Array(); myArray[0] = 3; myArray[1] = 1; myArray[2] = 2; // 排序前数组中的顺序为[3, 1, 2] // 按从小到大排序 // 排序后数组中的顺序为[1, 2, 3] myArray.sort(function(a, b) { return a > b ? 1 : -1 }); // 按ascii字母顺序排序(默认情况下的排序方法) myArray.sort(); // 按从大到小排序 myArray.sort(function(a, b) { return a < b ? 1 : -1 }); // 遍历myArray for (var i = 0; i < myArray.length; i++) { alert("myArray[" + i + "]=" + myArray[i]); } } function myArray() { var myArray = new Array(); myArray.push("ZhangDan"); myArray.push("LuiLei"); var length = myArray.length; for (var i =

冒泡排序(Java)

被刻印的时光 ゝ 提交于 2020-02-07 01:32:43
一. 概念 把相邻的两个元素进行比较,当一个元素大于右侧相邻元素时,交换他们的位置;否则,位置不变。 二. 举例 常规的冒泡排序——时间复杂度为O(n^2) 原始数列 进行第一趟排序 第一趟排序后的结果 进行第二趟排序 第二趟排序后的结果 第三到七趟的排序结果 冒泡排序改进 改进1:在第六轮排序后,整个数列已经有序,无需进行第七轮排序 ; 改进2:右边的很多元素已经排序过,已经是有序的,无需每次都比较。 三. Java实现 代码 import java.util.Arrays; public class MySort { public static void sort (int[] array) { //最后一次交换的位置 int lastExchangeIndex = 0; //无序数列的边界,每次比较到此为止 int sortBorder = array.length - 1; for (int i = 0; i < array.length - 1; i++) { //有序标记,每一轮的初始值都是true boolean isSorted = true; for (int j = 0; j < sortBorder; j++) { int temp = 0; if (array[j] > array[j+1]) { temp = array[j]; array[j] =

POJ 3255:Roadblocks(次短路)

人盡茶涼 提交于 2020-02-06 22:40:04
题目大意:求无向图的次短路。 分析: 在起点终点各求一次最短路,枚举边,通过该边的最短路为其权值加上到起点和终点最短路之和,找到最短但又比最短路长的路径。 代码: program block; type point=^node; node=record v,c:longint; next:point; end; var a:array[0..5000]of point; dis:array[0..5000,1..2]of longint; q:array[0..5000]of longint; g:array[0..5000]of boolean; e:array[0..100000,1..3]of longint; n,i,m,x,y,v,ans:longint; p:point; procedure add(x,y,c:longint); var p:point; begin new(p); p^.v:=y; p^.c:=c; p^.next:=a[x]; a[x]:=p; end; procedure spfa(s,d,l:longint); var i,h,t,u,v,k:longint; begin fillchar(g,sizeof(g),false); for i:=1 to n do dis[i,l]:=maxlongint div 3; dis[s,l]:=0;

和为S的两个数字

这一生的挚爱 提交于 2020-02-06 21:06:34
和为S的两个数字 1.题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 2.思路 设置两个下标left,right分别指向数组头和尾,计算curSum = array[left] + array[right],如果curSum > sum,则right–,否则left++,直到curSum == sum。 3.代码 class Solution { public : vector < int > FindNumbersWithSum ( vector < int > array , int sum ) { vector < int > res ; if ( array . empty ( ) ) { return res ; } int left = 0 ; int right = array . size ( ) - 1 ; while ( left < right ) { int curSum = array [ left ] + array [ right ] ; if ( curSum == sum ) { res . push_back ( array [ left ] ) ; res . push_back ( array [ right ] ) ; break ; } else

去除数组的重复元素

可紊 提交于 2020-02-06 05:05:54
1.遍历数组法 思路:新建一个新数组,遍历传入数组值不在新数组就加入该新数组 注意:判断值是否在数组的方法indexOf是ECMAScript5的方法,IE8以下不支持,需要写兼容 function unique1(array){   var n = []   for(var i = 0;i < array.length;i++){     if(n.indexOf(array[i]) == -1){       n.push(array[i])     }   }   return n; } //IE8以下兼容 //判断浏览器是否支持indexOf方法 if(!Array.prototype.indexOf){   Array.prototype.indexOf = function(item){     var result = -1     var a_item = null     if(this.length == 0){       return result     }     for(var i = 0;i < this.length;i++){       a_item = this[i]       if(a_item === item){         result = i         break;       }     }     return

560. Subarray Sum Equals K

丶灬走出姿态 提交于 2020-02-06 01:49:35
Given an array of integers and an integer k , you need to find the total number of continuous subarrays whose sum equals to k . Example 1: Input: nums = [1,1,1], k = 2 Output: 2 Note: The length of the array is in range [1, 20,000]. The range of numbers in the array is [-1000, 1000] and the range of the integer k is [-1e7, 1e7]. 思路: 暴力求解存在大量的重复计算,比如:在下标为0的时候,运算过 nums[0] + nums[1] + nums[2],在下标为1的时候,又算了一次nums[1] + nums[2]。 但是,采用累加和的方式: nums[1] + nums[2] = sum[2] - sum[0], 只需要遍历一次就可以知道所有的前缀和,存在map里,用的时候就可以实现在常数时间的查找。 class Solution { public: int subarraySum(vector<int>& nums, int k) { int cur =

A. Array with Odd Sum

ぃ、小莉子 提交于 2020-02-06 00:29:48
time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are given an array aa consisting of nn integers. In one move, you can choose two indices 1≤i,j≤n1≤i,j≤n such that i≠ji≠j and set ai:=ajai:=aj. You can perform such moves any number of times (possibly, zero). You can choose different indices in different operations. The operation := is the operation of assignment (i.e. you choose ii and jj and replace aiai with ajaj). Your task is to say if it is possible to obtain an array with an odd (not divisible by 22) sum of elements. You have

JAVA中length属性length()方法和size()方法的区别

喜你入骨 提交于 2020-02-05 18:59:52
1.length属性是针对数组而言的 // 一维数组 int [ ] array = new int [ 7 ] ; System . out . println ( array . length ) ; // 二维数据 int [ ] [ ] array = new int [ 2 ] [ 7 ] ; System . out . println ( array . length ) ; System . out . println ( array [ 1 ] . length ) ; 输出: 7 7 7 2.length() 是字符串的方法 String m = "bu jia ban de cheng xu yuan ! " ; System . out . println ( m . length ( ) ) ; 输出: 30 3.size()是针对泛型集合的,查看泛型中有多少元素 List < Float > F = new LinkedList < > ( ) ; System . out . println ( F . size ( ) ) ; // 输出的值为0,默认值 F . add ( 1.5f ) ; F . add ( 2.2f ) ; System . out . println ( F . size ( ) ) ; // 输出的值为2 输出: 0 2