数组

LeetCode 多数元素

人盡茶涼 提交于 2020-03-17 12:42:29
解法一:将所有元素放入HashMap中,利用HashMap中的键的唯一性,将重复元素对应的值value+1,当获取到全部元素后,遍历HashMap的键获取出最符合条件的那一个元素 public static int majorityElement1 ( int [ ] nums ) { //key为nums元素, value为元素的个数 Map < Integer , Integer > map = new HashMap < Integer , Integer > ( ) ; for ( int num : nums ) { if ( map . get ( num ) != null ) { //包含这个元素,给 value值加1 map . put ( num , map . get ( num ) + 1 ) ; } else { map . put ( num , 1 ) ; } } //获取value最大的元素 for ( Integer key : map . keySet ( ) ) { if ( map . get ( key ) > ( nums . length / 2 ) ) { return key ; } } return - 1 ; } 解法二:剔除元素法, 设置两个变量,1 是数组的多数元素候选 numH,并将其初始化为数组的第一个元素,2

数组&字符串学习

╄→гoц情女王★ 提交于 2020-03-17 11:24:58
创建数组 var arr = new Array(8) //代表创建的数组长度 var arr1 = new Array(5,4,3,3,'test') //调用两个或多个数组元素或者数组的一个非数值元素,参数将会成为新数组的元素 数组方法 arr.push()和arr.unshift()向数组追加元素,返回新数组长度,改变原有数组 arr.pop()和arr.shift()删除数组前面元素,返回删除的数组元素,改变原始数组 delete arr[9]删除对象属性同样适用于数组,删除后不会改变原有数组length,删除元素会变为空,数组变成稀疏数组 arr.splice(start[, deleteCount[, item1[, item2[, …]]]])以数组形式返回被修改的内容。此方法会改变原数组 arr.concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组 arr.includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。 arr.indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。 arr.join() 方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。

返回值每一项数组内值校验

两盒软妹~` 提交于 2020-03-17 10:50:46
如下图,获取H5 首页菜单,验证菜单名是否正确 找到对应的接口,查看返回数据,菜单名字存放在TabBar 下的 3 个数组内 Eolinker 传统的 JSON 参数定位( json 结构定位)只能校验第一个数组内的 pageName 而测试预期是需要拼配所有的菜单名称,有两种方法解决这个需求 方法 1 、 JSON 参数定位选择 json Path 定位,按照下图填入数据 方法 2 、 比较暴力,直接全等于。判断简单的数组可以用 参考地址: https://blog.csdn.net/koflance/article/details/63262484 来源: https://www.cnblogs.com/becks/p/12508755.html

Leetcode_字符串string(3)

谁说我不能喝 提交于 2020-03-17 10:10:32
目录 LC_28.实现 strStr() * LC_32. 最长有效括号 H* 38. 外观数列 E 重点看:28,32 没意思:38 LC_28.实现 strStr() * 方法一:子串逐一比较 - 线性时间复杂度 最直接的方法 - 沿着主串逐步移动滑动窗口,将窗口内的子串与 needle 字符串比较。(窗口大小=子串长度) 方法二:双指针 - 线性时间复杂度 上一个方法的缺陷是会将 haystack 所有长度为 L 的子串都与 needle 字符串比较,实际上是不需要这么做的。 首先,只有子串的第一个字符跟 needle 字符串第一个字符相同的时候才需要比较 其次,可以一个字符一个字符比较,一旦不匹配了就立刻终止。 方法三: Rabin Karp - 常数复杂度 有一种最坏时间复杂度也为 O(N) 的算法。思路是这样的,先生成窗口内子串的哈希码,然后再跟 needle 字符串的哈希码做比较。 这个思路有一个问题需要解决,如何在常数时间生成子串的哈希码? 滚动哈希:常数时间生成哈希码 生成一个长度为 L 数组的哈希码,需要 O(L) 时间。 如何在常数时间生成滑动窗口数组的哈希码?利用滑动窗口的特性,每次滑动都有一个元素进,一个出。 由于只会出现小写的英文字母,因此可以将字符串转化成值为 0 到 25 的整数数组: arr[i] = (int)S.charAt(i) - (int

Java 数组的格式

。_饼干妹妹 提交于 2020-03-17 08:16:50
package Lx; import sun.security.util.Length; import java.util.Arrays; import java.util.logging.Level; /** java 中的数组:数组是引用数据类型; 数组是用来存放一系列数据类型相同的元素; 数组的格式; 格式1:数据类型[] 数组名=new 数据类型[数组长度]; *注意:1:直接输出数组名会输出输出内存中的地址,如果需要输出数组中的内容,需要通过Arrays.toString(数组名)来实现 2:如果不输入内容 程序会输出系统默认类型值:如:int[]:0:double[]:0.0:boolean[]:false;String[]:null; 3:数组定义时必须指定长度 格式2:数据类型[] 数组名 = {值1,值.....值n}; 格式3:数据类型[] 数组名 = new int[]{值1,值.....值n}; */ public class ArrayDemo { public static void main(String[] args) { int[] sry = new int[3]; double[] ds = new double[5]; boolean[] bs = new boolean[3]; String[] st = new String[3];

51nod 1001 数组中和等于K的数对(STL/双指针)

吃可爱长大的小学妹 提交于 2020-03-17 08:00:33
给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对。例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0,8),(2,6),(3,5)。 输入 第1行:用空格隔开的2个数,K N,N为A数组的长度。(2 <= N <= 50000,-10^9 <= K <= 10^9) 第2 - N + 1行:A数组的N个元素。(-10^9 <= A[i] <= 10^9) 输出 第1 - M行:每行2个数,要求较小的数在前面,并且这M个数对按照较小的数升序排列。 如果不存在任何一组解则输出:No Solution 输入样例 8 9 -1 6 5 3 4 2 9 0 8 输出样例 -1 9 0 8 2 6 3 5 解法一:运用c++的STL函数 lower_bound(a,a+n,num)-a; a数组必须有序 upper_bound(a+i,a+j,x)-a //返回第一个大于x的数的位置 lower_bound(a+i,a+j,x)-a //返回的是第一个大于等于x的数的位置 注意此函数为前闭后开, 比如你找从1~n : lower_bound(a+1,a+n+1,x)-a ,如果找不到返回 n+1 本题是从前往后找第一个大于等于k-a[i]的为位置,找到后在判断是不是和为k # include

搜索旋转排序数组

喜夏-厌秋 提交于 2020-03-17 07:37:05
题目: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O(log n) 级别。 示例 1: 输入 : nums = [ 4 , 5 , 6 , 7 , 0 , 1 , 2 ] , target = 0 输出 : 4 示例 2: 输入 : nums = [ 4 , 5 , 6 , 7 , 0 , 1 , 2 ] , target = 3 输出 : - 1 解题思路: 题目要求 O(log N)的时间复杂度,基本可以断定本题是需要使用二分查找,怎么分是关键。 由于题目说数字了无重复,举个例子: 1 2 3 4 5 6 7 可以大致分为两类, 第一类 2 3 4 5 6 7 1 这种,也就是 nums[start] <= nums[mid]。此例子中就是 2 <= 5。 这种情况下,前半部分有序。因此如果 nums[start] <=target<nums[mid],则在前半部分找,否则去后半部分找。 第二类 6 7 1 2 3 4 5 这种,也就是 nums[start] > nums[mid]。此例子中就是 6 > 2。 这种情况下

指针和动态数组 new ,delete

纵然是瞬间 提交于 2020-03-17 06:58:15
............心中要有一内存块,以便理解知识 计算机储存数据必须知道数据的3种属性: 1.存储在何处.......并起名 2.值 3.类型 (1)int a;a=30; (2)int *b=&a; (3).int *a,b;注意...整型....指针a,整型...变量b,对每个指针都要有一个*; .......................指针.......................................... 1.指针是一个变量,存储的是...值的地址,而不是值本身, 指针变量 是指向特定变量类型指针,和数组相似 ..int* tax;...............指向int变量的指针,又叫整型指针 ..double * str;.............指向double变量的指针 ..int 指针和double指针虽然指向的数据类型不同, 但这两个变量本身长度的通常是一样的,好比1016可能是超市的地址,也可能是,村庄的地址一样,.....地址的长度或值,不能指示该地址上有什么建筑物,也不指示有关变量的长度或类型的任何信息 .显示地址,cout常用16进制 .......................指针与c++原理.......................................... oop强调的是运行阶段进行决策; 如

使用JSONPath

百般思念 提交于 2020-03-17 04:50:06
SONPath是查询JSON对象元素的标准方法。 JSONPath使用路径表达式来导航JSON文档中的元素,嵌套元素和数组。 有关JSON的更多信息,请参阅 JSON简介 。 使用JSONPath访问JSON元素 接下来,您可以找到如何使用JSONPath表达式访问JSON格式数据中的各种元素。 对于本节中的示例,假设源流包含以下格式的JSON记录。 { "customerName":"John Doe", "address": { "streetAddress": [ "number":"123", "street":"AnyStreet" ], "city":"Anytown" } "orders": [ { "orderId":"23284", "itemName":"Widget", "itemPrice":"33.99" }, { "orderId":"63122", "itemName":"Gadget", "itemPrice":"22.50" }, { "orderId":"77284", "itemName":"Sprocket", "itemPrice":"12.00" } ] } 访问JSON元素 要使用JSONPath在JSON数据中查询元素,请使用以下语法。 这里, $ 表示数据层次结构的根,并且 elementName 是要查询的元素节点的名称。 $

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。

你离开我真会死。 提交于 2020-03-17 04:09:12
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 方法一:考虑用递归实现 分析:array[mid]>array[left]时,最小数必定在mid的右侧 array[mid]>array[left]时,最小数必定在mid的左侧 array[mid]=array[left]时,最小数不能确定在左还是在右(比如:{3,4,2,3,3,3,3}和{3,3,3,3,4,2,3,3),采取的策略是直接将left向右移动一位 import java.util.Arrays; public class Solution { public int minNumberInRotateArray(int [] array) { //二分查找 int left=0; int right=array.length-1; int mid=(left+right)/2; if(array.length==2) { return array[0]<array[1]?array[0]:array[1]; } if(array.length==1) { return array