第十九周 7.4 --- 7.10
2016-07-04 13:22
183 查看
新的一周,惯例地加油>.<
7.4
leetcode 114 Flatten Binary Tree to Linked List
把一颗二叉树拉成一个链表,不能够使用额外的空间
不会捉,看的题解了
如果 一个节点,没有右子树的话,直接把左子树挪到右子树就可以了
如果 一个节点没有左子树的话,就不用管
如果 一个节点既有左子树,又有右子树,就把右子树放在左子树的前序遍历的最后一个节点的后面,这样就变成 第一种情况了,再把左子树接过去
View Code
7.4
leetcode 114 Flatten Binary Tree to Linked List
把一颗二叉树拉成一个链表,不能够使用额外的空间
不会捉,看的题解了
如果 一个节点,没有右子树的话,直接把左子树挪到右子树就可以了
如果 一个节点没有左子树的话,就不用管
如果 一个节点既有左子树,又有右子树,就把右子树放在左子树的前序遍历的最后一个节点的后面,这样就变成 第一种情况了,再把左子树接过去
#include <iostream> #include <cstdio> #include <cstring> #include <map> #include <vector> #include <algorithm> using namespace std; typedef long long LL; const int maxn = 2e5+10; int n,a[maxn],b[maxn],mx[maxn][55],mn[maxn][55]; void RMQ_init(){ for(int i = 0;i < n;i++) mx[i][0] = a[i]; for(int i = 0;i < n;i++) mn[i][0] = b[i]; for(int j = 1;(1<<j) <= n;j++){ for(int i = 0;i + (1<<j) - 1 < n;i++){ mx[i][j] = max(mx[i][j-1],mx[i+(1<<(j-1))][j-1]); mn[i][j] = min(mn[i][j-1],mn[i+(1<<(j-1))][j-1]); } } } int RMQ_mx(int L,int R){ int k = 0; while((1<<(k+1)) <= R-L+1) k++; return max(mx[L][k],mx[R-(1<<k)+1][k]); } int RMQ_mn(int L,int R){ int k = 0; while((1<<(k+1)) <= R-L+1) k++; return min(mn[L][k],mn[R-(1<<k)+1][k]); } void solve(){ RMQ_init(); LL res = 0LL; int lb,ub,mid,c1,c2; for(int i = 0;i < n;i++){ lb = i;ub = n; for(int k = 1;k <= 100;k++){ mid = lb+(ub-lb)/2; if(RMQ_mx(i,mid) >= RMQ_mn(i,mid)) ub = mid; else lb = mid+1; } c1 = ub; lb = i;ub = n; for(int k = 1;k <= 100;k++){ mid = lb+(ub-lb)/2; if(RMQ_mx(i,mid) > RMQ_mn(i,mid)) ub = mid; else lb = mid+1; } c2 = ub; res += 1LL*(c2-c1); //printf("c1 = %d c2 = %d\n",c1,c2); } printf("%I64d\n",res); } int main(){ while(scanf("%d",&n) != EOF){ for(int i = 0;i < n;i++) scanf("%d",&a[i]); for(int i = 0;i < n;i++) scanf("%d",&b[i]); solve(); } return 0; }
View Code
相关文章推荐
- mysql性能调优
- JMX
- WebViewClient与WebChromeClient的区别
- linux 修改密码(一)
- 设计模式之单例模式
- flash builder eclipse不在本地使用
- Linux上安装使用FTP服务器ProFTPD的教程
- handler
- 矩阵乘积
- 在VB里怎么实现移位的算术运算操作
- electron 搭建与运行
- 得到微信消息并存入数据库
- APP开发流程实例讲解-儒释道网络电台八天开发全程-功能和界面初步设定
- TypeScript
- rails4.2.6配置发送邮件
- SAP反记帐和红字冲销
- CocoaPods如何指定版本号
- JVM_OPTS配置参考模板
- DNS 原理入门
- Java知识点4