LeetCode Python题解(一)----双指针法
根据: github优秀创作者.
算法思想
1.双指针法
2.排序
3.贪心思想
4.二分查找
5.分冶
6.搜索
7.动态规划
8.数学
1. 双指针法:
双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。
1.1 有序数组的 Two Sum
题目描述:在有序数组中找出两个数,使它们的和为 target。
输入: numbers={2, 7, 11, 15}, target=9
输出: [1,2]
思路:使用双指针,一个指针指向值较小的元素,一个指针指向值较大的元素。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。
- 如果两个指针指向元素的和 sum == target,那么得到要求的结果;
- 如果 sum > target,移动较大的元素,使 sum 变小一些;
- 如果 sum < target,移动较小的元素,使 sum 变大一些。
class Solution:def twoSum(self,nums,target):i,j = 0,len(nums)-1while i<j:sum = nums[i]+nums[j]if sum < target:i += 1elif sum > target:j -= 1else:return [i+1,j+1]return None
1.2 两数平方和
题目描述:判断一个数是否为两个数的平方和。
输入: 5
输出: True
解释: 1 * 1 + 2 * 2 = 5
思路:使用双指针,因为为两个数的平方和,一个指针指向较小的元素,一个指针指向值较大的元素。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。
- 较小元素自定义为0,较大元素自定义为目标值的开平方
- 如果两个指针指向元素的和 sum == target,那么得到要求的结果;
- 如果 sum > target,减小较大元素的值,使 sum 变小一些;
- 如果 sum < target,增大较小元素的值,使 sum 变大一些。
class Solution:def judgeSquareSum(self,target):i,j = 0,int(target**0.5)while i <= j:sum = i*i + j*jif sum < target:i += 1elif sum > target:j -= 1else:return Truereturn False
1.3 反转字符串中的元音字符
题目描述:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
输入: "leetcode"
输出: "leotcede"
思路:使用双指针指向待反转的两个元音字符,一个指针从头向尾遍历,一个指针从尾到头遍历。
class Solution:def reverseVowels(self, s: str) -> str:vowel = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']i, j = 0, len(s) - 1s = list(s)while i < j:if s[i] in vowel and s[j] in vowel:s[i], s[j] = s[j], s[i]i, j = i + 1, j - 1elif s[i] not in vowel:i = i + 1elif s[j] not in vowel:j = j - 1return ''.join(s)
1.4 回文字符串
题目描述:可以删除一个字符,判断是否能构成回文字符串。
输入: "aba"
输出: True
思路:使用双指针指向字符串,一个指针从头向尾遍历,一个指针从尾到头遍历。
- 如果双指针指着的两边的值不同的时候,选择跳过左边的或者右边的一个值,再去验证一遍
class Solution:def validPalindrome(self,strs):i,j = 0,len(strs)-1while i < j:if strs[i] != strs[j]:return self.isPalindrome(strs,i,j-1) | self.isPalindrome(strs,i+1,j)i += 1j -= 1return Truedef isPalindrome(self,strs,left,right):while left < right:if strs[left] != strs[right]:return Falseleft += 1right -= 1return True
本文内容根据github优秀创作者,仅仅是自己学习。
LeetCode Python题解(一)----双指针法相关推荐
- LeetCode Python题解(二)----排序
根据: githhub优秀创作者. 算法思想 1.双指针法 2.排序 3.贪心思想 4.二分查找 5.分冶 6.搜索 7.动态规划 8.数学 快速排序 用于求解 Kth Element 问题,也就是第 ...
- LeetCode 206. 反转链表 双指针法 辅助结点 递归
题目链接 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000 进阶: ...
- python 双指针法_leetcode 11 题解:python3@ 官方题解_暴力法_双指针法
leetcode leetcode解题得的源码,解题思路在代码的注释里. 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 ...
- 题解——两种算法解Leetcode题库第977题(暨双指针法小结)
一.Leetcode题库第977题题目 977. 有序数组的平方 二.解法一--暴力解法 算法思路:for循环遍历数组,对数组元素做平方操作:调用sorted()函数对处理后的数组进行快速排序 算法时 ...
- 双指针法(leetcode分类解题,C++代码详细注释)
双指针法 前言 167.两数之和 II - 输入有序数组 88.合并两个有序数组 142. 环形链表 II 633.平方数之和 680. 验证回文字符串 Ⅱ 27. 移除元素 344. 反转字符串 剑 ...
- 【LeetCode笔记】11.盛最多水的容器(Java、双指针法)
文章目录 题目描述 代码 & 解题思路 题目描述 无 代码 & 解题思路 思路:使用左右两个指针,不断缩小范围,并在每次缩小的过程对最大值进行更新. 代码实现不难,主要是弄明白为啥这样 ...
- 字符串--Leetcode (python)
单词拆分 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字典 ...
- 【BZOJ4653】[Noi2016]区间 双指针法+线段树
[BZOJ4653][Noi2016]区间 Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含 ...
- 【BZOJ2500】幸福的道路 树形DP+RMQ+双指针法
[BZOJ2500]幸福的道路 Description 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一同晨练来享受在一起的时光. 他们画出了晨练路线的草图,眼尖的 ...
最新文章
- php数组包含对象吗,在包含数组的PHP对象上调用方法
- maven 下载 源码和javadoc命令
- 认证篇——单向散列函数
- DM8168的McSPI/McASP/McBSP接口
- 50T内存?百万机时?头一次见这么耗费内存和机时的分析?
- Mybatis 一对多关联查询collection用法
- python实现人脸识别比对_人脸识别并比对实现(基于face_recognition)
- APPCAN学习笔记002---app快速开发AppCan.cn平台特色
- LINUX使用sed,字串中包含特殊字符怎么办?
- VS C# string 字符查找 寻找指定字符
- java 反序列化 怎么知道类_理解java中的序列化与反序列化
- java中cplex程序_Cplex中文教程全 PDF 下载
- dk 7 linux x64.rpm,linux x64 Java/JDK 11下载 jdk-11.0.7_linux-x64_bin.rpm官方镜像版
- 有了这款geek卸载工具,让你卸载不在烦恼!
- RAB, RB, SRB
- 马云开酒吧了,酒吧叫“平头哥”,真猛~
- 2022-07-25 第五小组 顾祥全 学习笔记 day18-JavaSE-接口
- 【javaScript】原生实现窗口拖动效果
- 计算机语言市场份额,21年7月编程语言排名:python上升迅速,others占比最高
- 100999凑整到万位进一_大数与凑整教学实录
热门文章
- ES5-Array-push(),pop(),shift(),unshift()
- hdu-3071 Gcd Lcm game---质因数分解+状态压缩+线段树
- 软件工程实践2017 个人技术博客
- SmartRoute之大规模消息转发集群实现
- 中国最齐全的主要电子商务网站(B2C)
- 优化eclipse启动速度
- linux tpm 测试完整记录,亲测有效。
- Windows Embedded Standard开发初体验(四)
- 【我的Android进阶之旅】推荐一款能提升数十倍效率的Android应用开发助手
- [翻译] DSL和模型驱动开发的最佳实践(3/4)