#牛客堂直播视频#数组相关和动态规划(2015.7.8)



【本期题目】

第一题:

计算数组的小和

【题目】

数组小和的定义如下:

例如数组s=[1,3,5,2,4,6],在s[0]的左边小于等于s[0]的数的和为0,在s[1]的左边小于等于s[1]的数的和为1,在s[2]的左边小于等于s[2]的数的和为1+3=4,在s[3]的左边小于等于s[3]的数的和为1,在s[4]的左边小于等于s[4]的数的和为1+3+2=6,在s[5]的左边小于等于s[5]的数的和为1+3+5+2+4=15,所以s的小和=0+1+4+1+6+15=27。

给定一个数组s,实现函数返回s的小和。

 

第二题:

数组中未出现的最小正整数

【题目】

给定一个无序整型数组arr,找到数组中未出现的最小正整数。 

【举例】

arr=[-1,2,3,4]。返回1。

arr=[1,2,3,4]。返回5。

 

第三题:

数组排序之后相邻数的最大差值

【题目】

给定一个整型数组arr,返回如果排序之后,相邻两数的最大差值。 

【举例】

arr=[9,3,1,10]。如果排序,结果为[1,3,9,10],9和3的差为最大差值,故返回6。

arr=[5,5,5,5]。返回0。

【要求】

如果arr的长度为N,请做到时间复杂度为O(N)。

 

第四题:

动态规划的空间优化方法

注:下面回帖给出了源代码供参考。

【嘉宾介绍】 左程云 
华中科技大学本科--计算机科学与技术专业、 芝加哥大学硕士--计算机科学专业 
IBM软件工程师、 百度软件工程师、 刷题5年的算法热爱者 
《程序员代码面试指南--IT名企算法与数据结构题目最优解》 作者,电子工业出版社即将出版发行,书籍涉及算法与数据结构编程题目240道以上,并且个人实现出最优解,大部分题目为面试高频题

【参与牛客堂直播】
每周三晚8:00~9:30,直播页面http://www.nowcoder.com/live/courses

【直播题目讨论】
加入牛客5群272820159
全部评论
为什么不直接将每个值放到它该放的位置,负数和大于n的都不管,然后再遍历一遍就能找到结果(比老师的好理解)leetcode 41 题
点赞 回复
分享
发布于 2015-09-05 20:52
还有个音乐链接:http://5sing.kugou.com/yc/399563.html
点赞 回复
分享
发布于 2015-07-09 13:15
联易融
校招火热招聘中
官网直投
不能全屏
点赞 回复
分享
发布于 2015-07-19 10:25
本期答案领取地址: 加入牛客讨论2群(244930442 ) 群资料中文件:2015-07-08题目解释及其代码.pdf
点赞 回复
分享
发布于 2015-07-22 10:32
求答案!
点赞 回复
分享
发布于 2015-07-31 16:01
大神帅破天
点赞 回复
分享
发布于 2015-08-02 19:58
hehe
点赞 回复
分享
发布于 2015-08-12 21:27
额求源代码
点赞 回复
分享
发布于 2015-08-23 17:00
int missNum(int *arr) {     int l = 0;     int r = arr.length;     while(l < r)     {         if(arr[l] == l + 1)         {             l++;         }         else if(arr[l] <= l || arr[l] > r || arr[arr[l] - 1] == arr[l])         {             arr[l] = arr[--r];         }         else         {             swap(arr, l, arr[l] - 1);         }     }     return(l + 1); }
点赞 回复
分享
发布于 2015-08-23 17:21
求代码
点赞 回复
分享
发布于 2015-08-24 10:08
求代码
点赞 回复
分享
发布于 2015-08-29 15:39
求代码
点赞 回复
分享
发布于 2015-09-02 22:05
求答案。。。。。
点赞 回复
分享
发布于 2015-09-03 23:11
#include <iostream> using namespace std; int main() { int sum=0,tmp=0; int n; cin>>n; int arr[128]; for(int i=0;i<n;i++) cin>>arr[i]; for(int i=0;i<n;i++){ for(int j=0;j<i;j++) { if(arr[i]>arr[j]) tmp+=arr[j]; } sum+=tmp; tmp=0; } cout<<sum<<endl; }
点赞 回复
分享
发布于 2015-09-10 16:25
第二题:arr[l] = arr[--r];始终很难理解
点赞 回复
分享
发布于 2015-09-13 15:57
不能全屏
点赞 回复
分享
发布于 2015-09-14 00:41
代码在哪
点赞 回复
分享
发布于 2015-09-17 11:26
nice
点赞 回复
分享
发布于 2015-09-24 00:37

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务