首页 > 代码库 > Two Points问题--之LeetCode 11题
Two Points问题--之LeetCode 11题
---恢复内容开始---
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题