码迷,mamicode.com
首页 > 其他好文 > 详细

Two Points问题--之LeetCode 11题

时间:2017-04-07 21:12:06      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:tar   时间   复杂   不同的   font   限制   存在   poi   containe   

---恢复内容开始---

Container with most  water--LeetCode11题

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.

题目的大致意思就是给定义个数组,然后根据相应的索引值垂直x轴划线,然后从任意选择两条线段,根据木桶原理进行蓄水,找到蓄水最多的两条线段。我首先采用暴力遍历的方式进行计算,这样的话时间复杂度是O(N^2),通过LeetCode测试时,时间超出限制。

然后看LeetCode上面的优质解答,代码如下:

技术分享

这样就延伸出一系列的Two Points(双指针)问题,以下题目全部来自微信公众号:光影键盘侠。

Move Zeros---LeetCode第道题

给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序

注意:

1.必须在原数组上操作
2.最小化操作数

解题思路(双指针分别是指向数组的和指向0的指针):

技术分享

代码:

技术分享

Remove Duplicates from Sorted Array---LeetCode第道题

 

给一个整数数组,去除重复的元素。

你应该做这些事

1.在原数组上操作
2.将去除重复之后的元素放在数组的开头
3.返回去除重复元素之后的元素个数

注意是排好序的数组,例如输入 [0 0 1 2 3 3]输出4

 解题思路:两个指针一个进行遍历,一个记录重复的长度,相同的话长度加1,不同的话左移--代码如下:

技术分享

Implement strStr()--LeetCode第28题

对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1

Implement strStr().

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

思路:(注意:i的范围很容易出错,注意是haystack.length()-needle.length()+1而不是简单的haystack.length())两个指针分别从两个字符串进行遍历,判断haystack有没有needle

技术分享

 

 

 

 

 

---恢复内容结束---

Container with most  water--LeetCode11题

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.

题目的大致意思就是给定义个数组,然后根据相应的索引值垂直x轴划线,然后从任意选择两条线段,根据木桶原理进行蓄水,找到蓄水最多的两条线段。我首先采用暴力遍历的方式进行计算,这样的话时间复杂度是O(N^2),通过LeetCode测试时,时间超出限制。

然后看LeetCode上面的优质解答,代码如下:

技术分享

这样就延伸出一系列的Two Points(双指针)问题,以下题目全部来自微信公众号:光影键盘侠。

Move Zeros---LeetCode第道题

给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序

注意:

1.必须在原数组上操作
2.最小化操作数

解题思路(双指针分别是指向数组的和指向0的指针):

技术分享

代码:

技术分享

Remove Duplicates from Sorted Array---LeetCode第道题

 

给一个整数数组,去除重复的元素。

你应该做这些事

1.在原数组上操作
2.将去除重复之后的元素放在数组的开头
3.返回去除重复元素之后的元素个数

注意是排好序的数组,例如输入 [0 0 1 2 3 3]输出4

 解题思路:两个指针一个进行遍历,一个记录重复的长度,相同的话长度加1,不同的话左移--代码如下:

技术分享

Implement strStr()--LeetCode第28题

对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1

Implement strStr().

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

思路:(注意:i的范围很容易出错,注意是haystack.length()-needle.length()+1而不是简单的haystack.length())两个指针分别从两个字符串进行遍历,判断haystack有没有needle

技术分享

 

 

 

 

 

Two Points问题--之LeetCode 11题

标签:tar   时间   复杂   不同的   font   限制   存在   poi   containe   

原文地址:http://www.cnblogs.com/muziyueyueniao/p/6679992.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!