长度

GO数组和切片

戏子无情 提交于 2020-01-16 16:03:10
在学习go基础语法时,遇到两种数据类型:数组和切片。感觉容易混淆,特别记录一下。 1、描述 (1)数组 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。 数组是值类型,将一个数组赋值给另一个数组时将复制一份新的元素 (2)切片 切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片(“动态数组”),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。 切片是引用类型,因此在当传递切片时将引用同一指针,修改值将会影响其他的对象。 即当一个切片作为参数传递给一个函数时,函数对该切片的修改在函数外部也可以看到。 2、定义与初始化 slice和数组在声明时的区别:声明数组时,方括号内写明了数组的长度或使用…自动计算长度,而声明slice时,方括号内没有任何字符。 (1)数组 数组声明需要指定元素类型及元素个数 var variable_name [SIZE]variable_type //例如: var array [10]int 初始化数组: var array = [5]int{1, 2, 3, 4, 5} //初始化数组中 {} 中的元素个数不能大于 [] 中的数字。 var array1 = [...]int{1, 2

洛谷P4238【模板】多项式求逆

◇◆丶佛笑我妖孽 提交于 2020-01-16 05:38:28
洛谷P4238 多项式求逆: http://blog.miskcoo.com/2015/05/polynomial-inverse 注意: 直接在点值表达下做$B(x) \equiv 2B'(x) - A(x)B'^2(x) \pmod {x^n}$是可以的,但是一定要注意,这一步中有一个长度为n的和两个长度为(n/2)的多项式相乘,因此要在DFT前就扩展FFT点值表达的“长度”到2n,否则会出错(调了1.5个小时) 备份 版本1: 1 #prag\ 2 ma GCC optimize(2) 3 #include<cstdio> 4 #include<algorithm> 5 #include<cstring> 6 #include<vector> 7 #include<cmath> 8 using namespace std; 9 #define fi first 10 #define se second 11 #define mp make_pair 12 #define pb push_back 13 typedef long long ll; 14 typedef unsigned long long ull; 15 const int md=998244353; 16 const int N=2097152; 17 int rev[N]; 18 void init(int

习题3-4 周期串

99封情书 提交于 2020-01-16 00:18:52
/* *如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。 *输入一个长度不超过80的串,输出它的最小周期。 *样例输入:HoHoHo *样例输出:2 */ # include <stdio.h> # include <string.h> //枚举法 int main ( ) { char word [ 100 ] ; scanf ( "%s" , word ) ; int len = strlen ( word ) ; for ( int i = 1 ; i <= len ; ++ i ) //遍历各种可能出现周期1,2,3,4...len { int ok = 1 ; //检测字符串是否具有周期性,1表示真 //从周期长度的下一个位置开始与前面周期子串中的字符逐个比较,若出现一个不相等字符,则这个串长到此结束(跳出内循环) for ( int j = i ; j < len ; ++ j ) if ( word [ j ] != word [ j % i ] ) { ok = 0 ; break ; } if ( ok ) { printf ( "%d\n" , i ) ; break ; } //找到周期立刻结束(跳出外循环) } return 0 ; } /*分析: *1

菜鸡刷算法题之最长子串长度

北战南征 提交于 2020-01-14 22:59:23
小垃圾刷算法题 【我绝对没有在水博客】 力扣上的字符串类型题 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 如:输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 思路: 遍历是不可能遍历的,复杂度太大,系统不给过. 借用一下滑动窗口思想. 当窗口里不包含下一个字符时 把窗口往后移,并且比较当前长度和最长的长度 当窗口包含下一个字符时 一个一个往前找,直到把相同的字符删掉. 就这样,再高级的我想不明白了. 代码如下: // An highlighted block class Solution { public int lengthOfLongestSubstring ( String s ) { int num = s . length ( ) ; Set < Character > set = new HashSet < > ( ) ; int ans = 0 ; int i = 0 ; int j = 0 ; while ( j < num && i < num ) { if ( ! set . contains ( s . charAt ( j ) ) ) { set . add ( s . charAt ( j ++ ) ) ; ans = Math . max ( j - i , ans )

js获取对象长度和名称

妖精的绣舞 提交于 2020-01-12 04:41:34
1.对象的长度不能用.length获取,用js原生的Object.keys可以获取到 var obj = {'name' : 'Tom' , 'sex' : 'male' , 'age' : '14'}; var arr = Object.keys(obj); console.log(arr); // ['name','sex','age'] console.log(arr.length); //3 2. javascript获取json对象的key名称的两种方法 第一种方法 jsonObj = { Name: ‘richard‘, Value: ‘8‘ } for (key in jsonObj){ console.log(key); //add your statement to get key value } 结果 Name Value 第二种方法 javascript中,Object具有一个key属性,可以返回json对象的key的数组 (Object has a property keys, returns an Array of keys from that Object) 用法: Object.keys(jsonObj) jsonObj = { Name: ‘richard‘, Value: ‘8‘ } console.log(Object.keys(jsonObj)

[CodeForces 1284C]New Year and Permutation(DP)

有些话、适合烂在心里 提交于 2020-01-11 15:13:08
题意 若一个1 ~ n的排列中存在一个区间 [ L , R ] [L,R] [ L , R ] 使得这个区间内元素的最大值与最小值之差为 R − L R-L R − L ,则称其为一个 片段 ,显然所有长度为1的区间均为一个 片段 。现在给定n与一个素数m,求1 ~ n的全排列中所有 片段 数之和对m取模的结果。 1 ≤ n ≤ 250000 , 1 0 8 ≤ m ≤ 1 0 9 1≤n≤250000, 10^8≤m≤10^9 1 ≤ n ≤ 2 5 0 0 0 0 , 1 0 8 ≤ m ≤ 1 0 9 思路 这题是个DP, 乍一看没有什么想法 简单暴力显然行不通,求出每个排列然后依次统计必然是TLE的。 所以我们换一个思路,求出每种长度的 片段 数,再计算一下对于每种长度的 片段 ,它在所有 1 1 1 ~ n n n 的排列中有多少种放法,把它们乘起来求和就搞定了。 具体来说,对于 1 1 1 ~ n n n 的排列,长度为 i i i 的 片段 ,假设这个片段包含的元素为 X X X ~ X + i − 1 X+i-1 X + i − 1 : 这个 片段 自身有 i ! i! i ! 种排列方式 剩下有 n − i n-i n − i 个数,则这个 片段 可以放置在 ( n − i + 1 ) (n-i+1) ( n − i + 1 ) 个不同的位置(在它前面分别有0,1

最长无重复子序列

↘锁芯ラ 提交于 2020-01-11 06:27:56
参考 https://blog.csdn.net/max1231ff/article/details/103812330 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路 根据题目可知,我们需要维护一个子串,用于判断接下来出现的字符是否重复了。还有一个最大长度。用于记录历史出现的最大长度 代码实现 public static int lengthOfLongestSubstring(String s) { short front = 0;//最前位置 short

Arrays工具类

社会主义新天地 提交于 2020-01-09 05:48:30
=============Arrays工具类================= Arrays:用于操作数组工具类,里面定义了常见操作数组的静态方法。 常见的有: 二分查找。排序。将数组变成字符串。 int[] arr = { 4, 1, 5, 8, 2, 9 }; System.out.println(Arrays.toString(arr));// 输出 原始数组 [4, 1, 5, 8, 2, 9] // 对arr进行排序,默认是从小到大。 Arrays.sort(arr); System.out.println(Arrays.toString(arr));// 输出 排序[1, 2, 4, 5, 8, 9] int index = Arrays.binarySearch(arr, 7);//二分查找(折半查找) System.out.println("index=" + index);//如果没有找到,返回 插入点index=-5,负号说明没有找到 // -5说明 要找的7本应该在 5-1=4的下标, 即现在8的位置 Arrays.fill(arr, 88);//用88来填充整个数组 System.out.println(Arrays.toString(arr));//[88, 88, 88, 88, 88, 88] =================asList