arr

LeetCode.1189-balloon实例数最大值(Maximum Number of Balloons)

我与影子孤独终老i 提交于 2019-11-30 14:23:07
这是小川的第 416 次更新,第 449 篇原创 看题和准备 今天介绍的是 LeetCode 算法题中 Easy 级别的第 267 题(顺位题号是 1189 )。给定一个字符串文本,使用文本字符来构成单词 "balloon" 的尽可能多的实例。每个字符最多可以在文本中使用一次。返回可以形成的最大实例数。 例如: 输入:text = "nlaebolko" 输出:1 输入:text = "loonbalxballpoon" 输出:2 输入:text = "leetcode" 输出:0 约束 : 1 <= text.length <= 10^4 文本字符串仅包含小写英文字母。 第一种解法 题目的意思是要在一个给定的字符串中,找到能够组成字符串 "balloon" 的最大字符对数,本质上和木桶装水的容量由短板决定类似。 直接遍历text字符串中的字符,对字母 a 、 b 、 l 、 n 、 o 的出现次数计数,因为l和o是需要两个,在计数完后,需要对 l 和 o 的次数除2,然后比较5个字母出现次数的最小值,因为只有出现次数最小的那个字母才能最终决定组成多少个 "balloon" 。 public int maxNumberOfBalloons(String text) { if (text == "" || text.length() < 7) { return 0; } int A

数据标准化与Python实现

隐身守侯 提交于 2019-11-30 14:22:37
一、原理 数据标准化(Normalization):将数据按照一定比例进行缩放,使其落入到一个特定的小区间。 数据标准化的类别: Min-Max标准化 Z-Score标准化(Standard Score,标准分数) 小数定标(Decimal scaling)标准化 均值归一化 向量归一化 指数转换 1、Min-Max标准化 Min-Max标准化,指对原始数据进行线性变换,将值映射到[0,1]之间。 公式: 式中,x为原始数据的数据,x min 为原始数据的最小值,x max 为原始数据的最大值。 2、Z-Score标准化 又称为Standard Score(标准分数),指基于原始数据的均值(mean)和标准差(standard deviation)来进行数据的标准化。 公式: 式中,x为原始数据的数据,μ为原始数据的均值,σ为原始数据的标准差。 3、小数定标(Deciaml scaling)标准化 指通过移动小数点的位置来进行数据的标准化。小数点移动的位数取决于原始数据中的最大绝对值。 公式: 式中,x为原始数据,10 j 的j表示最大绝对值的位数。 例如,现在有一个数组[-309, -10, -43, 87, 344, 970],其中最大绝对值为970,即j=3,标准化为的数据为[-0.309, -0.01, -0.043, 0.087, 0.344, 0.97] 4、均值归一化

python中numpy使用

主宰稳场 提交于 2019-11-30 13:49:52
import numpy as np#导入numpy data=[[1,2,3],[4,5,6]]#创建元组 arr=np.array(data)#转化为数组 arr.ndim#数组空间维数 arr.shape#数据行列数 arr.dtype#数据类型""int32"" np.zeros(10)#指定长度 np.zeros((3,6))#创建3行6列的0数组 np.ones(5)#array([ 1., 1., 1., 1., 1.]) np.ones((3,4))#3行4列的全1矩阵 ar1=np.arange(10)#结果:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) np.eye(3)#3维单位矩阵 np.identity(3)#3维单位矩阵 np.ones_like(arr)#创建与arr相同行、列的全1矩阵 np.zeros_like(arr)#创建与arr相同行、列的全0矩阵 arr_f=arr.astype(np.float64)#将arr中的数据类型转换为float64格式 Nstring=np.array(['1.2','3','4'],dtype=np.string_)#创建数组师可以自行定义字符串 N_float=Nstring.astype(np.float)#将string数据转换为float格式,等价于float64 ###

查找

谁说我不能喝 提交于 2019-11-30 13:35:30
顺序查找   顺序查找是指将序列从头开始遍历,直到找到指定的元素为止。   在一个元素为n的序列中查找不存在的元素,需要比较n次。顺序查找虽然效率低下,但是却适用于任何序列。   顺序查找的代码如下: 1 public static int seqSearch(int[] arr, int val) { 2 for (int i = 0; i < arr.length; i++) { 3 if (arr[i] == val) return i; 4 } 5 return -1; 6 } seqSearch   例如,在序列(1, 2, 3, 4, 5, 6, 7, 8, 9)中查找元素7:从1开始比较,直到找到了7所在位标并返回。   顺序查找一共比较了7次。 二分查找   二分查找是指取有序序列中间的元素作为枢轴,枢轴两边被分割为两个子序列,一边比枢轴大,另一边比枢轴小。这样,查找的元素要么为枢轴,要么在其中一个子序列中。每次递归查找时,可以将区间规模大致缩减一半,从而大大加快查找效率。   在一个元素为n的序列中查找不存在的元素,需要比较log 2 n次。二分查找只适用于有序序列。   二分查找的代码如下: 1 public static int binarySearch(int[] arr, int low, int high, int val) { 2 if (low >

选择排序

元气小坏坏 提交于 2019-11-30 13:00:29
/**} * 选择排序 (将小的放在前面,每轮只和第一个数交换) * @author Administrator * */ public class TestArray2 { public static void main(String[] args) { int [] arr = {6,9,3,1,4,8,5,7,2}; for (int i = 0; i < arr.length - 1; i++) { for (int j = i + 1; j < arr.length; j++) { if (arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } printArr(arr); } public static void printArr(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } } 来源: https://www.cnblogs.com/sacai/p/11590223.html

冒泡排序

China☆狼群 提交于 2019-11-30 12:36:58
/** * 冒泡排序 * @author Administrator * */ public class TestArray { public static void main(String[] args) { int[] arr = {5,2,6,9,4,3,1,7,8}; for (int i = 0; i < arr.length -1; i++) { //外层循环是程序需要执行多少趟 for (int j = 0; j < arr.length - 1 - i; j++) { //内层循环是每趟需要比较多少次 if (arr[j] > arr[j + 1]) { int temp = arr[j]; //定义临时变量储存数据 arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } print(arr); } public static void print(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } } 来源: https://www.cnblogs.com/sacai/p/11588547.html

有序数列的二分搜索

孤街醉人 提交于 2019-11-30 12:06:41
二分查找 import java.util.*;public class HW3 { public static void main(String[] args) { Scanner in = new Scanner(System.in); //输入要查找的数 System.out.println("请输入要打印的数据:"); int number = in.nextInt(); Random rd = new Random(); //在数组中随机,注:范围是在打印时标示 int[] arr = new int[11]; for (int i = 0; i < 11; i++) //对数组的11个数,开始分配值 { arr[i] = rd.nextInt(50); //0-49 //对这11个数组赋值 } Arrays.sort(arr); // 因为二分搜索是对有序数列使用的,所以先对数组中的数排序 System.out.println(Arrays.toString(arr)); //将有序数组打印出来 int index = Search(arr, number); //调用search()方法(二分搜索)进行查找 if(index==-1){ //若返回的是-1,则没有找到数 System.out.println("没有查找到该数!!!"); }else{ //若返回为下标

js之冒泡排序

时间秒杀一切 提交于 2019-11-30 11:56:55
思路:每遍历一次找出数组中最大值放在最末尾,接着下一次遍历就数组长度-1,继续找出这次数组中的最大值。 function bubble(arr){ for(var i=0;i<arr.length-1;i++){ /*最后一次遍历数组只剩一个元素,*无需再遍历 所以arr.length-1 */ for(j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ var temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } return arr; } var arr=[10,50,5,25,19,11]; console.log(bubble(arr)); 来源: https://blog.csdn.net/huanxianxianshi/article/details/101347609

JS数组的初级操作

北慕城南 提交于 2019-11-30 11:56:50
今天因为一个比较麻烦的需求需要用得到数组的操作,然后简单的看了一下关于js操作数组相关的文章和一些使用方法,希望对大家有所帮助,当然因为时间的关系写都是一些基本的方法,后期有时间的话写一写应用方面的吧。 首先定义一个数组:var arr = [1,2,3,4]; 一、arr.push(1); 后面添加,结果[1,2,3,4,1] 二、arr.unshift(1); 前面添加,结果[1,1,2,3,4] 三、arr.pop(); 从后删除一个,结果[1,2,3] 四、arr.shift(); 从前删除一个,结果[2,3,4] 五、splice方法 5.1、删除操作:arr.splice(0,2); 结果[3,4] ()里面的数字为删除的区间,从什么位置删除几个的意思 5.2、替换操作:arr.splice(0,1,x); 结果[x,2,3,4] 5.3、添加操作:arr.splice(1,0,x); 结果[1,x,2,3,4] x可以是很多个,arr.splice(1,0,x,y,z); 结果[1,x,y,z,2,3,4] 第一个数字是位置,如果是0的话,新添加的在最前面 5.4、拆分操作 var arr =’abcghyuj’ arr.splice(”); 结果[a,b,c,g,h,y,u,j] 六、sort排序方法 6.1、var arr = [c,a,b,d]; arr

快速排序

天大地大妈咪最大 提交于 2019-11-30 10:34:12
代码: public static void main(String[] args) { int[] arr = { 49, 38, 65, 97, 23, 22, 76, 1, 5, 8, 2, 0, -1, 22 }; quickSort(arr, 0, arr.length - 1); System.out.println("排序后:"); for (int i : arr) { System.out.print(i + " "); } } private static void quickSort(int[] arr, int low, int high) { if (low < high) { // 找寻基准数据的正确索引 int index = getIndex(arr, low, high); // 进行迭代对index之前和之后的数组进行相同的操作使整个数组变成有序 quickSort(arr, 0, index - 1); quickSort(arr, index + 1, high); } } private static int getIndex(int[] arr, int low, int high) { // 基准数据 int tmp = arr[low]; while (low < high) { // 当队尾的元素大于等于基准数据时