首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2022-01-08:数组中只有01,每过1代,0旁边只有11,当前0

2022-01-08:数组中只有01,每过1代,0旁边只有11,当前0会变成1。每过1代,0旁边有2个1,当前0还是0。 比如10001,经过1代,会变成11011,再过1代,还是11011 。...求一个数组经过M代以后数组。函数定义是void f(int[] arr,int m) 。 答案2022-01-08: x里有有限个01x1,中间0,x中有2m个0变成1,最中间0不会变成1。...1x,右0,x中有m个0变成1。 x1,左0,x中有m个0变成1。 时间复杂度:O(N)。 空间复杂度:O(1)。 代码用golang编写。...代码如下: package main import "fmt" func main() { arr := []byte{0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0}...: [图片] *** 题目来自左神,代码是自己写

28610
您找到你想要的搜索结果了吗?
是的
没有找到

【从01学算法】 数组链表

今天讲最基本数据结构,数组链表。如果你已经滚瓜烂熟,可以跳过本文或选择查缺补漏。 内存工作原理 假设你正要去超市,需要寄存两样东西。...这个超市寄存柜,一个抽屉只能放一个东西,所以你需要两个抽屉。 ? 将东西分别放到了12号抽屉里。 ? 服务员将号码牌给你后,就可以去shopping了,购物完,凭号码牌拿东西即可。...当需要存储多项数据时,会用到两种基本方式---数组链表 假设你要编写一个管理待办事项应用,需要将这些待办事项存储到内存中,用数组还是链表?...索引 使用数组链表存储数据,我们都会给元素编号,编号从0开始,这些元素编号位置成为索引。 例如,下面的数组,元素20在索引1处 ?...需要注意是,链表删除元素时,当能够立即删除元素时,运行时间才为O(1), 因为通常我们都记录了链表第一个最后一个元素。其他情况均为O(n),因为需要通过顺序遍历再删除。

45710

2022-11-28:给定两个数组AB,比如 A = { 0, 1, 1 } B = { 1, 2, 3 } A = 0, B = 1,表示01

2022-11-28:给定两个数组AB,比如 A = { 0, 1, 1 } B = { 1, 2, 3 } A0 = 0, B0 = 1,表示01有双向道路 A1 = 1, B1 = 2,表示1到...每天所有居民都去往0节点上班 所有的居民都有一辆5座车,也都乐意别人一起坐车 车不管负重是多少,只要走过一条路,就耗费1汽油 比如A、B、C居民,开着自己车来到D居民位置,一共耗费3汽油...let mut dfn: Vec = repeat(0).take((n + 1) as usize).collect(); // a为头树,一共有10个节点 // size...// a为头树,所有的居民是要向a来汇聚 // cost[a] : 所有的居民要向a来汇聚,总油量耗费 let mut cost: Vec = repeat(0).take...cost); return cost[0]; } // 图 : graph // 当前头,原来编号,不是dfn序号!

36430

2022-11-28:给定两个数组AB,比如 A = { 0, 1, 1 } B = { 1, 2, 3 } A = 0

2022-11-28:给定两个数组AB,比如 A = { 0, 1, 1 } B = { 1, 2, 3 } A[0] = 0, B[0] = 1,表示01有双向道路 A[1] = 1, B[1]...节点,其他1~N节点上,每个节点上都有一个居民 每天所有居民都去往0节点上班 所有的居民都有一辆5座车,也都乐意别人一起坐车 车不管负重是多少,只要走过一条路,就耗费1汽油 比如A、B、C居民,...开着自己车来到D居民位置,一共耗费3汽油 D居民和E居民之间,假设有一条路 那么D居民可以接上A、B、C,4个人可以用一辆车,去往E的话,就再耗费1汽油。...let mut dfn: Vec = repeat(0).take((n + 1) as usize).collect(); // a为头树,一共有10个节点 // size...cost); return cost[0]; } // 图 : graph // 当前头,原来编号,不是dfn序号!

27520

0 到 n-1 数组判重

数组中重复数字?...hash,通过hash判断一个数字是否在之前出现过只需要O(1)时间复杂度,我们知道hashset底层过就是hashmapkey,即hash实现。...但是当数据散乱程度非常大时,hash会非常消耗空间复杂度。比如数列0,1963,2,15,同时也可能会产生hash冲突时间。...因为其是数字,同时其数列中数字只出现在0-n-1所有,我们可以采用直接定址法,这样避免了hash冲突时间,也同时可以减少空间复杂度。...可以本地使用快排交换思想,快速将数据位置定位,同时我们规定, nums[i] == i,当前位置数据应该等于当前位置坐标。 这样就可以使用O(1)空间负责度完成去重定位。

34220

0-1背包问题之滚动数组

物品为: 重量 价值 物品0 1 15 物品1 3 20 物品2 4 30 问背包能背物品最大价值是多少? 一维dp数组(滚动数组) 对于背包问题其实状态都是可以压缩。...这就是滚动数组由来,需要满足条件是上一层可以重复利用,直接拷贝到当前层。 读到这里估计大家都忘了 dp[i][j]里ij表达是什么了,i是物品,j是背包容量。...dp[i][j] 表示从下标为[0-i]物品里任意取,放进容量为j背包,价值总和最大是多少。 一定要时刻记住这里ij含义,要不然很容易看懵了。...(这里如果读不懂,就在回想一下dp[j]定义,或者就把两个for循环顺序颠倒一下试试!) 所以一维dp数组背包在遍历顺序上二维其实是有很大差异!,这一点大家一定要注意。...初始化 遍历顺序相对简单了。 所以我倾向于使用一维dp数组写法,比较直观简洁,而且空间复杂度还降了一个数量级! 在后面背包问题讲解中,我都直接使用一维dp数组来进行推导。

64510

return 0return 1return -1区别「建议收藏」

1、返回值int 类型函数返回: return语句用来结束循环,或返回一个函数值。 return 0:一般用在主函数结束时,按照程序开发一般惯例,表示成功完成本函数。...2、布尔类型返回: return 0:返回假; return 1:返回真; 一般这样函数用来实现一个判断是否逻辑,或检查有无数据。返回真表示“是”,返回假表示“否”!...c语言编译系统在给出逻辑运算结果时,以“1”表示真,以“0”表示假。例如:i = 1 > 3;则i值为0。反之,i = 1 < 3;则i值为1。...例如int main(){}则必须返回一个值 return 0代表函数正常终止 ruturn 1代表函数非正常终止 被调函数 return 1只是给主调函数一个标志,说明他执行过程遇到异常情况。....html —————————————————————————————— 网址:​教你高效且优雅访问国外网站(LINK)​点此搜索 —————————————————————————————— 版权声明

3.3K30

为什么数组下标从 0 开始?而不是 1

很多小伙伴初学编程时候都被元素下标折磨过,为什么很多编程语言要把 0 作为第一个下标索引,而不是直观 1 呢?...Dijkstra 说有的,选 1 2,因为这俩不等式有个很突出有点,就是不等式边界差(不等式右边 - 不等式左边)正好等于连续序列长度 这里可以排除掉 3 4,那么 1 2 该如何选出最优表示...1 2 不等式区别就在于: 1 不等式左边(下界)等于序列中最小值,不等式右边(上界)大于序列中最大值 2 不等式左边(下界)小于序列中最小值,不等式右边(上界)等于序列中最大值 对于第...2 个不等式来说,下界小于序列中最小值,这会出现一个问题,比如我们连续序列是 [0,1,2,3,4] 那么按照第 2 个不等式写法,不等式左边就是 -1,-1 是非自然数,而我们需要表示连续序列是自然数序列...遵循不等式 1 规则: 当从下标 1 开始时,下标范围 1 ≤ i < N+1 当从下标 0 开始时,下标范围 0 ≤ i < N 哪个更优雅?

82630

深入解析C语言数组指针(0)

在谈指针同时我们也要谈谈数组数组可以说和指针密不可分,故把它俩放在一起谈。 一.指针 1.初级指针 内存地址 硬件存储中有一个值得注意地方是边界对齐。...实际上声明并没有错,原因是每个变量中包含一连串10。它可以被解释为浮点数也可以被解释为整数,这取决于它们被使用方式。...通过下面的例子说明: 例子1: int array[10],a; for(a=0;a<10;a+=1) array[a]=0; 例子2: int array[10],*ap; for...第二个声明是合法,它为数组前四个元素提供了初始值,最后一个元素初始化为0; 自动计算数组长度 int arr[]={1,2,3,4,5,6};   当声明中未说明数组长度时,编译器将根据数组中元素个数分配恰好够装入全部元素空间...下面的两个声明都是使p2指向a2第一个整型元素: int *p2=&a2[0][0]; int *p2=a2[0]; 作为函数参数多维数组 作为函数参数多为数组传递方式一维数组相同

1.3K30

封装数组之包含、搜索删除元素

前言:在上一小节中我们已经会了如何获取如何修改数组元素,在本小节中我们将继续学习如何判断某个元素是否在数组中存在、查询出某个元素在数组位置、以及删除数组中元素等方法编写。  ...2.查找数组中元素e所在索引(只是一个),如果不存在元素e,则返回-1。...//查找数组中元素e所在索引(只是一个),如果不存在元素e,则返回-1; public int find(int e) { for (int i = 0; i < size;...= 20 [0,1,2,3,4,5,6,7,8,9] 在数组指定索引位置插入元素e: Array: size = 11 , capacity = 20 [0,200,1,2,3,4,5,6,7,8,9...] 在数组头部位置插入元素e: Array: size = 12 , capacity = 20 [-10,0,200,1,2,3,4,5,6,7,8,9] 根据数组索引查找数组元素: 9 修改数组索引位置上元素值

76620

raid0raid1区别

简单说,RAID是一种把多块独立硬盘(物理硬盘)按不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高存储性能提供数据备份技术。...raid 10 raid 5 raid 0 性能从好到坏:raid 0 raid 10 raid 5 raid 1 成本从低到高:raid 0 raid 5 raid 1 raid 10 2、RAID...类型选择 类型 RAID0 RAID1 读写性能 最好(因并行性而提高) 读单个磁盘无分别,写则要写两边 安全性 最差(毫无安全保障) 最高(提供数据百分之百备份) 冗余类型 没有 有镜像100%...这种数据上并行操作可以充分利用总线带宽,显著提高磁盘整体存取性能 2、RAID 1   又称为Mirror或Mirroring,它宗旨是最大限度保证用户数据可用性可修复性。...RAID 1操作方式是把用户写入硬盘数据百分之百地自动复制到另外一个硬盘上。 由于对存储数据进行百分之百备份,在所有RAID级别中,RAID 1提供最高数据安全保障。

1.4K10

Java 数组、排序查找(1

目录 前言 一、一维数组1数组介绍 (2)数组使用 1)动态初始化 2)静态初始化 3)数组引用 (3)数组细节 (4)应用案例 二、数组赋值机制  三、数组拷贝 总结 ---- 前言 国庆第五天...数组名[ ] = {元素值1,元素值2……}        如:int a[5] = {1, 2, 3, 4, 5}; 3)数组引用 引用方法:数组名 [下标]; 注意:数组下标是从0开始,如:...a数组第三个数引用方法为 a[2] (3)数组细节 1数组是多个相同类型数据组合,实现对这些数据统一管理 2)数组元素可以是任何数据类型,但不能混用 3)数组下标是从 0 开始 4)数组下标必须在指定范围内...[i]); // arr1 arr2 指向同一个数据空间 } } } 最后会输出:  三、数组拷贝 案例演示: 将 int[] arr1 = {10,20,30}; 拷贝到 arr2 数组...// 创建一个新数组 arr2 , 开辟新数据空间 // 大小 arr1 一样大 int[] arr2 = new int[arr1.length]; //遍历 arr1 ,把每个元素拷贝到对应位置

64210

0最长连续子数组【转载+优化代码】

题意:给定一个数组数组中元素值只能是1或者-1,求其0最长连续子序列长度;     数组1,-11,-11,-11,-1,其结果为:8     数组11,-111,-1,-1...,其结果为:6 解析: 通过分析可知,要使其0,只有当1-1个数相等时,才会成立,但题目要求是连续子序列,所以单纯统计其1-1个数不可取。   ...由题目中求最长连续子序列,可想到动态规划来求解,动态规划求解既是寻找其状态转移方程建立状态转移表过程   设dp[i]为下标为i及其之前数组中所有元素, ?            ...如图所示,数组1,-11,-11,-11,-1最后一个值为0,直接满足结果,输出8 ?...如上图,数组11,-111,-1,-1,dp取值为dp[0] = dp[2] = dp[6] = 1; dp[1] = dp[3] = d[5] = 3; dp[4] = 3; 对于每个值,取最后一次出现位置第一次出现位置之差

1.3K20

电脑编程是01表示了字母,为何不用01表示汉字笔画?

这个问题之所以出现,是对计算机相关知识缺失。 ---- 计算机硬件CPU内存,操作系统,内核,编程语言,这些希望你能看一看概念。 ---- 再说0-1,也就是字节码。...字节码是对于硬件存储地址而言。内存只认0,1。那么好了,这4个字节存一堆0-1,代表什么?这个代表什么,就是编程语言层次。 往小了说,迅速收题。...也就是说,同一个4字节0-1,存储同样值【数】,用三种编码方式解析出来,不同! ---- 举几个例子: ANSI: 没有对汉字编码,不认汉字。...UTF-8:支持世界上大多数语言字符,汉语,德语,日语,俄罗斯语字符。都给你指定好了,用时候查字典就对了。 Unicode:解析出来汉字“中国”长这样:“\u4e2d\u56fd”。为啥是这个?...---- 说了一串字符编码问题,还没有说到“用汉字编写电脑系统软件”! 未来在你手中,加油! 以上。

53910
领券