长度

26,27删除数组重复项

回眸只為那壹抹淺笑 提交于 2019-12-30 00:11:24
目录 26,27删除数组重复项 题目 双指针法 题26解法 题27解法一 题27解法二 26,27删除数组重复项 题目 题目26 给定一个排序数组,你需要在 原地删除 重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 题目27 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。 刚开始看完题目,不知道应该怎样去解决,为什么不创建新数组就可以“原地”删除元素,在参看力扣优秀解法之后,其实只要返回的新长度的范围内符合即可。 双指针法 题26解法 首先题目是 已经排序后 的数组,在不考虑数组中超出新长度后面的元素的前提下

木头折断问题

[亡魂溺海] 提交于 2019-12-29 20:27:49
木头折断问题 题目:一个长度为n(double类型变量,n > 5)的木条, 可以在其2 / 5处折断,变为两段长度分别为2n / 5、3n / 5的木条;如果得到的木条的长度仍大于5,则继续按照上述方法折断,直到任意木条的长度均不大于5为止。编写递归函数,计算一个长度为n的木条,最后会被折断为多少根木条? 样例1:输入:4.8 输出:1 样例2:输入:6 输出:2 样例3:输入:20 输出:5 代码: # include <stdio.h> static int count = 1 ; int function ( double n ) { if ( n < 5 ) return count ; else { count ++ ; function ( 2 * n / 5 ) ; function ( 3 * n / 5 ) ; return count ; } } int main ( ) { double n ; scanf ( "%lf" , & n ) ; printf ( "%d" , function ( n ) ) ; return 0 ; } 来源: CSDN 作者: qq_35926606 链接: https://blog.csdn.net/qq_35926606/article/details/103754515

数据结构习题总结之第九章和第十章

依然范特西╮ 提交于 2019-12-27 04:02:17
第九章 强连通分量:有向图G中极大强连通子图 在邻接表的每个线形链表中,各结点的顺序是任意的。 深度优先搜索法DFS:在邻接链表中就是选择第一个结点然后跳到第几行对应的结点 广度优先搜索法BFS:在邻接链表中就是遍历一整行,然后再按照次序根据每个结点跳到对应的行遍历。(队列实现) 拓扑排序:把入度为0的结点和边删去,依次进行。如果删除到最后,图中剩余的顶点中有前驱顶点,那么原图有环。 判断G有没有环可以用深度优先搜索法以及拓扑排序。 AOE网以及关键路径:顶点为事件,有向边为活动,边上的权值表示该活动持续的时间。你可以完完全全把他当作一个工程来看待。 (1)ee表示最早发生时间:顶点v到vk的最长路径长度。你想加入磨洋工效率降低,是不是得提前开工,所以这是尽早开工的意思。 ee(k)=max{ee(j)+<vj,vk>上的权} (2)le表示最迟发生时间:在不推迟整个工程完成,所以总的期限是ee,要做减法。 le(k)=min{le(j)-<vj,vk>上的权} (3)时间余量为l(i)-e(i) ,若为0,那么为0的边组成关键路径,存在的共有的部分,若提高效率做可以加快进程,p270. 关键路径不唯一。 一个边必须端点不同。 第十章 分块查找:有n个顶点,则分块时要求 根号n,块长度为根号n。s为块长,b为块的个数。。。查找成功时的平均查找长度为:(b+1)/2 + (s+1)

c 字符串常用函数

非 Y 不嫁゛ 提交于 2019-12-23 12:14:08
#include <iostream> #include <stdio.h> #include <vector> #include "string.h" using namespace std; int main() { //strlen:一直找到\0 char name[15]="hi,linson."; cout<<strlen(name)<<endl; char name2[3]={'h','\0'}; cout<<strlen(name2)<<endl;// //strcat:从目的\0开始替换.一直到原串的\0 //发现如果目的串长度不够,居然使用后面的空间.看来必须慎用. //src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 char name3[6]="start"; // cout<<&name2<<endl; // strcat(name2,name3); // cout<<name2<<&name2<<endl; // // cout<<name<<name2<<name3<<endl; //strncat //比较安全,可以指定长度.用目的串申请的长度-已经占用的长度,再-1(如果原来最后一位是\0,并且需要保留) strncat(name2,name3,3-strlen(name2)-1); cout<<name<<":

linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

孤街醉人 提交于 2019-12-18 19:23:51
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在做shell批处理程序时候,经常会涉及到字符串相关操作。有很多命令语句,如:awk,sed都可以做字符串各种操作。 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快。 一、判断读取字符串值 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 * ${var=DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:=DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 * ${var+OTHER} 如果var声明了, 那么其值就是$OTHER, 否则就为null字符串 ${var:+OTHER} 如果var被设置了, 那么其值就是$OTHER, 否则就为null字符串 ${var?ERR_MSG} 如果var没被声明, 那么就打印$ERR_MSG * ${var:?ERR_MSG} 如果var没被设置, 那么就打印$ERR_MSG * ${!varprefix*}

蓝桥杯练习

*爱你&永不变心* 提交于 2019-12-17 00:18:35
问题描述   有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法?   例如,长度为4的地面一共有如下5种铺法:   4=1+1+1+1   4=2+1+1   4=1+2+1   4=1+1+2   4=2+2   编程用递归的方法求解上述问题。 输入格式   只有一个数N,代表地板的长度 输出格式   输出一个数,代表所有不同的瓷砖铺放方法的总数 样例输入 4 样例输出 5 #include<stdio.h> int f(int n) { if(n 1||n 2) return n; else return f(n-2)+f(n-1); } int main() { int i; scanf("%d",&i); printf("%d",f(i)); return 0; } 来源: CSDN 作者: Yang-xiaoxiong 链接: https://blog.csdn.net/qq_44342520/article/details/103569385

每周跑步锻炼

∥☆過路亽.° 提交于 2019-12-12 14:18:02
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 2016年8月18日 18:00 路线:网易北京健身房 总长度:5km + 哑铃 2016年8月11日 18:00 路线:网易北京健身房 总长度:5km 2016年7月22日 18:00~18:40 晴 路线:网易北京健身房 总长度:5km(34分钟) 2016年7月17日 17:00~18:00 晴 路线:北京信息科技大学操场6+2 总长度:3.2km 2016年7月15日 18:00~18:30 晴 路线:健身房 总长度:3.0km 2016年7月10日 17:00~18:00 晴 路线:北京信息科技大学操场6+2 总长度:3.2km 2016年7月2日 17:00~18:00 晴 路线:北京信息科技大学操场4 总长度:1.6km 2016年6月19日 17:00~18:30 晴 路线:北京信息科技大学操场8+2 总长度:4公里 感悟:我只是沧海之一栗! 2016年6月9日 17:00~19:00 晴 路线:北京信息科技大学操场6+3 总长度:3.6公里 感悟:忘掉目标,享受过程 2016年6月5日 20:30~21:30 晴 路线:北京信息科技大学操场5+2 总长度:3公里 感悟:人生抉择 2016年5月29日 17:00~19:00 晴 路线:北京信息科技大学操场5+2 总长度:3公里

go语言切片和数组

☆樱花仙子☆ 提交于 2019-12-11 18:17:09
go语言的切片是动态数组,长度不固定。跟一般的数组不一样。 package main import "fmt" func main() { //Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的 var numbers = make([]int,3,5) //make([]T, length, capacity)创建一个切片,capacity会动态增加。 var iar =[]int{2,3,4,5,6,7,8,9} //这样写是一个数组, var siar []int //这样是定义了一个空切片,默认值是nil printSlice(numbers) printSlice(iar) printSlice(siar) //go语言数组或切片都支持这种[:]截取,类似于python中的切片操作,只是少了第2个:后面的步长。 fmt.Println("iar[:2]=",iar[:2]) fmt.Println("iar[1:6]=",iar[1:6]) siar=iar[1:3] printSlice(siar) fmt.Println("append") //append方法是追加多个元素在末尾,后面可以跟不定数目的元素。 iar=append(iar,1,2,3,4) printSlice(iar) siar=append(siar,9