博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode.ZigZag Conversion ,Container With Most Water
阅读量:5734 次
发布时间:2019-06-18

本文共 2112 字,大约阅读时间需要 7 分钟。

ZigZag Conversion:

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

P   A   H   NA P L S I I GY   I   R

And then read line by line: "PAHNAPLSIIGYIR"

 

Write the code that will take a string and make this conversion given a number of rows:

string convert(string text, int nRows);

convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".

一个字符串被画成锯齿形按照给定的行数,像这样:(你可以认为字体大小一致)

P   A   H   N

A P L S I I G
Y   I   R

然后你要按行读取它:"PAHNAPLSIIGYIR"

。。。?所以锯齿形是什么形?最后找到了解释:

Zigzag:即循环对角线结构(

0       8       16      
1     7 9     15 17      
2   6   10   14   18      
3 5     11 13     19      
4       12       20      

所以leetcode你不会找一个好点的样例么?

class Solution {public:    string convert(string s, int numRows) {        int len=s.length();        queue
q[numRows]; int idx=0; string ans=s; while(idx
=len) break; q[i].push(s[idx]); idx++; } for(int i=numRows-2;i>=1;i--) { if(idx>=len) break; q[i].push(s[idx]); idx++; } } idx=0; for(int i=0;i

 string ans要初始化才行,没初始化蜜汁re。

 11. Container With Most Water

Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.

Note: You may not slant the container and n is at least 2.

给你n个整数a1,a2..an,每个整数代表着一个坐标(i,a[1]),n个垂直的线段端点是(i,a[i])和(i,0)。

找两条线段,使得他们和x区域一起组成的容器装尽量多的水

木板盛水不是取决于最短的一条边吗,给定两个直线是i,j,答案不就是min(a[i],a[i+1],...a[j])*(j-i)吗

事实证明答案其实是min(a[i],a[j])*(j-i)。。

。。。?你这题目有歧义啊喂,with x-axis。。我怎么知道x-axis是不是包括其他线段啊

这样的话思路其实很简单。如果要先假设最短木板是谁,那势必要向左和向右查找,很复杂

于是不如就枚举木板的长度,让它在端点尽可能大的情况下尽可能的长。我们有一个贪心手段,就是每次剔除两端较小的一个端点

class Solution {public:    int maxArea(vector
& height) { int len=height.size(); int left=0,right=len-1; int ans=0; while(left
ans) ans=sum; if(height[left]

 

转载于:https://www.cnblogs.com/bitch1319453/p/6656797.html

你可能感兴趣的文章
go : 结构
查看>>
【Python第五篇】Python面向对象(初级篇)
查看>>
innobackupex参数之 --throttle 限速这个值设置多少合理 原创
查看>>
18 已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果
查看>>
BZOJ - 3578: GTY的人类基因组计划2
查看>>
理解WebKit和Chromium(电子书)
查看>>
爱——无题
查看>>
分布式服务框架原来与实践 读书笔记一
查看>>
Aho-Corasick automation-KMP
查看>>
【http】post和get请求的区别
查看>>
/etc/profile
查看>>
TFS强制撤销某个工作区的文件签出记录
查看>>
编写who命令
查看>>
2.1 sikuli 中编程运行
查看>>
愚公移山第一章伪代码
查看>>
常见的位运算技巧总结(膜wys)
查看>>
python魔法函数(二)之__getitem__、__len__、__iter__
查看>>
EL表达式无法显示Model中的数据
查看>>
Linux应用小技巧
查看>>
考题纠错2
查看>>