Two Points问题--之LeetCode 11题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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题的主要内容,如果未能解决你的问题,请参考以下文章

Array + two points leetcode.18 - 4Sum

《LeetCode之每日一题》:69.直线上最多的点数

A. Two distinct points

LeetCode题解之Intersection of Two Linked Lists

LeetCode之371. Sum of Two Integers

[LeetCode] Intersection of Two Arrays II 两个数组相交之二