arr

剑指offer 刷题记录(31~40题)

。_饼干妹妹 提交于 2020-01-01 00:25:01
转眼间就到了年末,前些天一直忙着论文投稿和开题报告。刷题都怠慢了,现在赶紧补上! 让我们用刷题来告别2019,用刷题来迎接2020!废话不多说,直接开始! 31.求出1-13的整数中1出现的次数,并算出100-1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。 最简单最直观的做法:一个个去判断,然后外层循环到n就行了。但是这样的做法效率很低。 //运行时间:6ms 占用内存:500k class Solution { public : int NumberOf1Between1AndN_Solution ( int n ) { int number = 0 ; if ( n < 1 ) return 0 ; for ( int i = 1 ; i <= n ; ++ i ) { int temp = i ; while ( temp ) { if ( temp % 10 == 1 ) ++ number ; temp / = 10 ; } } return number ; } } ; 还有这个方法,给跪了orz! //运行时间:6ms 占用内存:476k int

list、冒泡、二分法

淺唱寂寞╮ 提交于 2019-12-31 22:09:15
1.遍历第一次,寻找最大值,并且记录最大值的索引max_index 2.list(dict,str) 伪代码: if(是不是有饭吃): 如果是真 执行 (缩进) else: 如果是假 执行 写代码学习过程 1.用草稿纸画一下思路 2.把草稿纸上的内容,写成伪代码 3.伪代码翻译成代码 list list是有顺序的 表示方法: [] dict dict没有顺序 { 'name':'reboot' } list的特点: 有序 通过索引获取值:列表[索引] 两个Python内置函数: len(列表) 返回列表的长度 max() 最大值 min() 最小值 关于变量名: 不可以是list,len,max,min,del 删除列表元素: del删除元素(根据索引) list: 获取,删除,修改(直接赋值) 冒泡排序: 冒泡排序是一种典型的通过交换元素消除逆序的排序方法,是一种最简单的方法。 思路: (1) 每一遍检查将一个最大的元素交换到最后的位置,一些较大元素向右移动,前一个for循环控制第一层元素,从0到7,即range(len(lst)),第二个for循环从1到range(1,len(lst)-i)遍历。 (2)从左到右比较相邻元素,前一个元素较小就交换。 (3)如果原始待排序序列本身有序,可以提前退出排序,设置flag标志,为 true时,退出循环。 例: 两种思路实现冒泡算法:

03、数组&内存划分

北战南征 提交于 2019-12-31 04:32:16
1、数组   (1)概念    *同一种类型数据的集合,其实数组就是一个容器。   (2)特点    *数组会自动对其内部的元素从0开始编号   (3)格式    *格式1       元素类型[] 数组名 = new 元素类型[元素个数或数组长度];       该格式用于还不明确数组的具体数据       示例:         **int[] arr = new int[6];    *格式2       元素类型[] 数组名 = new 元素类型[]{元素1,元素2,元素3...};       该格式用于数组已明确存储的数据       示例:         **int[] arr = new int[]{12,34,24,56,74,};         **int[] arr = {334,45,22,4,646,7};       注意:        该类型{}内已明确元素个数,故[]内不要再输入   (4)怎么用     用数组来存储一组同类型的数据,可以通过对其角标的操作使用数组元素。     数组元素是存储在堆中的,数组名仅仅只是指向数组的地址,在调用函数时,对数组的操作结果不需要返回值,因为在对数组操作时,其内部已经改变。     对数组最基本的动作就是存与取;其核心思想是对角标的操作   (5)什么时候要用数组     如果数据出现了对应关系

基数排序(桶排序)整理

好久不见. 提交于 2019-12-31 02:26:33
基数排序介绍 1.基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用 2.基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法 3.基数排序(Radix Sort)是桶排序的扩展 4.基数排序是1887年赫尔曼·何乐礼发明的。它是这样实现的:将整数按位数切割成不同的数字,然后按每个位数分别比较。 基数排序的基本思想 1.将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。 2.这样说明,比较难理解,下面我们看一个图文解释,理解基数排序的步骤 图解 说明 1.基数排序是对传统桶排序的扩展,速度很快。 2.基数排序是经典的空间换时间的方式,占用内存很大, 当对海量数据排序时,容易造成 OutOfMemoryError 。 3.基数排序时稳定的。[注:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的

leetcode 16:最接近的三数之和

社会主义新天地 提交于 2019-12-30 22:48:14
Problem: 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/3sum-closest Answer: 1、暴力解法:时间复杂度O(n^3),超出时间限制。 2、O(n^2)的解法: 先将数组排序,对于每一个i从0到n - 1,令left = i + 1,right = size - 1,为了寻找更接近target的三数之和, 若三数之和大于target则让right - 1,若三数之和等于target则返回target,若三数之和小于target则让left + 1。 设排序后的数组arr为a, b, c, d, e, f。 令arr[i] = a, arr[left] = b, arr[right] = f。 若a + b + f < target,则令left + 1,即arr[left] = c, b不再有与小于f的数(如e)组合的可能,但由于e < f,a + b

es6常用知识点

偶尔善良 提交于 2019-12-30 13:16:09
let和const let和const的出现是为了能够替代var,因为var有着比较严重的污染 let 定义变量使用let替代var // let { var name = "胡爸爸" let name1 = "胡妈妈" } console.log(name) //胡爸爸 console.log(name1) //报错 name1 is not defined const const 定义不可修饰的变量(常量) // const const app = "APP" app = "ADD" console.log(app) //报错 Assignment to constant variable. (常量不能被修改的意思) 箭头函数 作用: 1.减少代码书写 2.保持this指向(保持this作用域) 对比普通函数 function hello( name ) { console.log(`hello ${name}`) } const hello1 = name => { console.log(`hello ${name}`) } hello('胡') hello1('胡') 函数只有一条return语句 // 如果函数只有一条return语句 const double = x=>x*2 //只有一条return 语句可以简写成这样 console.log(double(5))

php查询操作实现投票功能

强颜欢笑 提交于 2019-12-30 03:48:10
这篇文章主要为大家详细介绍了php查询操作实现投票功能的具体代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了php查询操作实现投票功能的代码,供大家参考,具体内容如下 题目: 解题方法汇总: 方法一: 1. 投票主页面: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> < html xmlns = " http://www.w3.org/1999/xhtml " > < head > <

【数据结构19】冒泡排序

泄露秘密 提交于 2019-12-29 19:24:35
文章目录 1. 冒泡排序介绍 2. 冒泡排序规则 3. 基本冒泡排序实例 4. 冒泡排序优化 1. 冒泡排序介绍 2. 冒泡排序规则 3. 基本冒泡排序实例 冒泡排序原理: ublic class BubbleSort { public static void main ( String [ ] args ) { int arr [ ] = { 3 , 9 , - 1 , 10 , - 2 } ; //第一趟排序就是把最大的数排在后面 int temp = 0 ; for ( int i = 0 ; i < arr . length - 1 ; i ++ ) { //如果前面的数比后面的数大就交换 if ( arr [ i ] > arr [ i + 1 ] ) { temp = arr [ i ] ; arr [ i ] = arr [ i + 1 ] ; arr [ i + 1 ] = temp ; } } System . out . println ( "第一趟排序后的数组:" + Arrays . toString ( arr ) ) ; //第二趟排序就是把第二大的数据排在倒数第二位 for ( int i = 0 ; i < arr . length - 1 - 1 ; i ++ ) { //如果前面的数比后面的数大就交换 if ( arr [ i ] > arr [

Php中正则小结(一)

时光毁灭记忆、已成空白 提交于 2019-12-29 07:29:50
一.概念 语法模式类似 perl . 表达式必须用分隔符闭合,比如一个正斜杠 (/). 分隔符可以是 任意非字母非数字,除反斜杠 (\) 和空字节之外的非空白 ascii 字符 如果分隔符 在表达式中使用,需要使用反斜线进行转义 。 二.组成 元字符 一个正则表达式基本组成 /原子和元字符/模式修正符 /代表定界符的一个 正则表达式的威力在于其能够在模式中包含选择和循环。它们通过使用元字符来编码在模式中,元字符不代表其自身,它们用一些特殊的方式来解析。 根据在方括号的内部还是外部分为两种。 1.方括号之外的元字符 元字符(符号) 说明 \ 一般用于转义字符 ^ 断言目标的开始位置(或在多行模式下是行首) $ 目标的结束位置(活在多行模式下行尾) . 匹配除换行符外任何字符(默认时) [,] 开始,结束字符类定义 | 开始一个可选分支 ( ,) 子组的开始,结尾标记 ? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性 * 量词,0 次或多次匹配 + 量词,1 次或多次匹配 { ,} 自定义量词开始标记,结束标记 2.模式中方括号内的部分称为“字符类” 元字符 说明 \ 转义字符 ^ 仅在作为第一个字符时,表明字符类取反 - 标记字符范围 元字符用法说明举例 1.转义(反斜线) \后紧跟着一个非字母数字字符,则取消该字符可能具有的任何特殊含义