当前位置: 首页 > 编程日记 > 正文

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优秀创作者,仅仅是自己学习。

相关文章:

解密淘宝网的开源架构(转)

淘宝网&#xff0c;是一个在线商品数量突破一亿&#xff0c;日均成交额超过两亿元人民币&#xff0c;注册用户接近八千万的大型电子商务网站&#xff0c;是亚洲最大的购物网站。那么对于淘宝网这样大规模的一个网站&#xff0c;我猜想大家一定会非常关心整个网站都采用了什么样…

不上全站https的网站你们就等着被恶心死吧

2019独角兽企业重金招聘Python工程师标准>>> 测试脚本 #!/bin/sh wget \ --user-agent"Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19" \-r \-P a…

《C#精彩实例教程》小组阅读01 – MSDN是什么?

学习编程&#xff0c;特别是在Windows环境下的编程&#xff0c;当我们遇到问题时&#xff0c;最先想到的权威解答机构就是MSDN了。 什么是MSDN呢&#xff1f; MSDN – Microsoft Developer Network 是微软一个期刊产品&#xff0c;专门介绍各种编程技巧。同时它也是独立于Mic…

LeetCode Python题解(二)----排序

根据&#xff1a; githhub优秀创作者. 算法思想 1.双指针法 2.排序 3.贪心思想 4.二分查找 5.分冶 6.搜索 7.动态规划 8.数学 快速排序 用于求解 Kth Element 问题&#xff0c;也就是第 K 个元素的问题。 可以使用快速排序的 partition() 进行实现。需要先打乱数组&#xff…

人生快乐之道(组图)

举报 转载于:https://www.cnblogs.com/qqnnhhbb/articles/1373323.html

Codeforces Round #270

Codeforces Round #270 题目链接 A&#xff1a;我是筛了下素数。事实上偶数仅仅要输出4和x - 4&#xff0c;奇数输出9和x - 9就可以 B&#xff1a;贪心的策略&#xff0c;把时间排序后。取每k个的位置 C&#xff1a;贪心。每次遇到一个人尽量让他用字典序小的&#xff0c;假设不…

Matlab与数据结构 -- 如何获取完整文件名

本图文介绍了Matlab中获取完整文件名的函数fullfile()。

用Git上传删除本地项目到gitlab---图文解析

Git简介 Git是目前世界上最先进的分布式版本控制系统 故事起源&#xff1a;如果你用Microsoft Word写过长篇大论&#xff0c;那你一定有这样的经历&#xff1a; 想删除一个段落&#xff0c;又怕将来想恢复找不回来怎么办&#xff1f;有办法&#xff0c;先把当前文件“另存为……

正常的人|正确的作息时间

正确的作息时间 标签&#xff1a;健康/保健 分类&#xff1a;美容护肤晚上9点——11点为免疫系统&#xff08;淋巴&#xff09;排毒时间。此时间应安静或听音乐 晚间11点——凌晨1点&#xff0c;肝的排毒时间&#xff0c;需在熟睡中进行凌晨1点——3点&#xff0c;胆的排毒时间…

基于Matlab的BP神经网络在语音特征信号识别中的应用

本微信图文详细介绍了BP神经网络在语音特征信号中的应用&#xff0c;并给出了Matlab源码。

DSSM(DEEP STRUCTURED SEMANTIC MODELS)

Huang, Po-Sen, et al. "Learning deep structured semantic models for web search using clickthrough data." Proceedings of the 22nd ACM international conference on Conference on information & knowledge management. ACM, 2013. 该网络把两个不同的输…

TCP和UDP传输特点

1.1TCP传输特点&#xff1a; 端到端通信&#xff1a;客户应用程序在一端&#xff0c;服务器在另一端建立可靠连接&#xff1a;建立连接时会测试网络的连通性可靠交付&#xff1a;建立连接后会发送数据是可靠的&#xff0c;除非因为故障而不能可靠交付&#xff0c;发送方会得到…

css3之 渐变

CSS3 渐变&#xff08;gradients&#xff09;可以让你在两个或多个指定的颜色之间显示平稳的过渡。 以前&#xff0c;你必须使用图像来实现这些效果。但是&#xff0c;通过使用 CSS3 渐变&#xff08;gradients&#xff09;&#xff0c;你可以减少下载的事件和宽带的使用。此外…

CRM:把 isv.config.xml 按钮事件移动到 entity.onload()

大家都知道在ISV.CONFIG里可以添加按钮&#xff0c;然后添加按钮事件&#xff0c;比如下面&#xff1a; <Entities><Entity name"account"><ToolBar ValidForCreate"0"ValidForUpdate"1"><Button Icon"/_imgs/ico_18_…

Matlab与线性代数 -- 均匀分布的随机矩阵

本微信图文详细介绍了Matlab中均匀分布的随机矩阵函数rand、rands、randperm。

pytest实战--参数化parametrize+前置fixture

文章目录参数化 parametrize适用场景一个典型的例子前置fixture参数化适用场景一个典型的例子示例2个人疑问&#xff1f;pytest既可以用来做单元测试&#xff0c;也可以用来做自动化接口测试&#xff0c;pytest可以结合allure生成漂亮的测试报告&#xff0c;经过一段时间的学习…

Matlab与机器学习 -- BP网络神经元上的转移函数

本图文详细介绍了BP神经网络常用的转移函数及其导数&#xff0c;单极性Sigmoid函数&#xff0c;双极性Sigmoid函数&#xff0c;线性函数。

在baidu上找到自己

在baidu上搜了我经常用的用户名&#xff0c;找到了这里&#xff0c;一看都满屋子都是灰尘&#xff0c;我打扫了一下。也清理了自己。发现那时的自己好冲动、好小孩。 其实现在也一样。我不想去否认自己的过去&#xff0c;但也不想公开这段过去。因为它在这个废弃的屋子里很安静…

selenium--iframe之模拟qq空间登录

文章目录前言分析切换iframe前言 我在模拟登录qq的时候&#xff0c;发现无论如何都定位不了qq的“账号密码登录”&#xff0c;怎么都进不去qq的登录页面&#xff0c;如下图所示 分析 打开 https://qzone.qq.com/然后点击二维码登录这块&#xff0c;背景出现了灰色&#xff…

Java读取Properties配置文件

目录1.Properties类与Properties配置文件2.Properties中的主要方法3.示例1.Properties类与Properties配置文件Properties类继承自Hashtable类并且实现了Map接口&#xff0c;使用键值对的形式来保存属性集。不过Properties的键和值都是字符串类型。2.Properties中的主要方法(1)l…

《C#精彩实例教程》小组阅读02 – Visual Studio简介与安装

本图文详细介绍了什么是Visual Studio&#xff0c;以及Visual Studio的安装过程。 上一次我们介绍了Visual Studio 2015的下载&#xff0c;以及MSDN。 这一次&#xff0c;我们说说什么是Visual Studio以及如何安装。 Visual Studio&#xff08;简称VS&#xff09;是微软公司…

从.NET寻找出路

自从成了金融危机的牺牲品之后&#xff0c;一直在寻找出路&#xff0e; 从.NET开发人员 到 待业青年&#xff0c; 再到现在的 技术支持&#xff0c;有些茫然&#xff0c;不知道未来在哪里&#xff01;&#xff01; 工作一年半&#xff0c;发现给别人打工没啥发展&#xff0c…

关于高速光耦6n137的使用总结_光耦使用中的那点事1

目前通用的隔离器件有光耦、变压器隔离、电容耦合等三大主流方式。其中光耦和变压器隔离使用的较多&#xff0c;有很多地方都可以见到。本次推送主要介绍光电耦合器的几个使用注意事项&#xff0c;以下截图数据来源于TLP785的数据手册。1、延时时间大家可以看到在5V供电情况下&…

javascript回调函数笔记

来源于&#xff1a;https://github.com/useaname/blog-study 在Javascript中&#xff0c;函数是第一类对象。意味函数可以像对象一样按照第一类被管理使用。回调函数是从一个叫函数式编程的编程范式中衍生出来的概念。简单来说&#xff0c;函数式编程就是使用函数作为变量。函数…

工厂方法模式与抽象工厂模式的区别

工厂方法模式&#xff1a; 一个抽象产品类&#xff0c;可以派生出多个具体产品类。 一个抽象工厂类&#xff0c;可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。 抽象工厂模式&#xff1a; 多个抽象产品类&#xff0c;每个抽象产品类可以派生出多个具…

LSGO代码小组第18周复盘日志

LSGO软件技术团队第18周代码小组学习复盘日志。

唐山松下焊接机器人编程招聘_机器人四小家族-松下Panasonic专注焊接

在日本松下的网站&#xff0c;机器人是和焊接系统方案是在一起的。松下机器人的历史&#xff08;来源于松下公司网站&#xff09;1980年松下AW系列弧焊机器人投放上市&#xff0c;机器人系统之间采用的是单向模拟通讯方式模拟通讯的机器人1983年示教的容易化1988年减少干涉的设…

基于Matlab的BP神经网络在非线性函数拟合中的应用

本图文详细介绍了如何利用Matlab神经网络工具箱实现BP神经网络对非线性函数的拟合。

aligned_storage简单学习

#include <iostream> #include <type_traits> #include <string>/* template< std::size_t Len, std::size_t Align default-alignment >struct::type aligned_storage; 相当于一个内建的POD类型他的大小是Size他的对齐方式是Align */ template<c…

有关高级关系引擎中存在错误

SQL server2005 Analysis Services项目中出现以下错误 高级关系引擎中存在错误。 无法与 DataSourceID 为“Adventure Works DW”、名称为“Adventure Works DW”的数据源建立连接。 但是数据源测试连接是好使的&#xff0c;搜到已解决办法&#xff0c;数据源对里双击&#xf…