20211208 | Leetcode每日算法

el/2024/4/19 22:56:54

咬定青山不放松,立根原在破岩中。
千磨万击还坚劲,任尔东西南北风。

0x001、两数之和

地址:https://leetcode-cn.com/problems/two-sum/

方法一、暴力循环

class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for i in range(len(nums)):for j in range(i+1,len(nums)):if nums[i]+nums[j]==target:return [i,j]return []

方法二、哈希表

class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:item = {}for i in range(len(nums)):if target-nums[i] in item:return [item[target-nums[i]],i]else:item[nums[i]] = ireturn []

0x002、盛最多水的容器

地址:https://leetcode-cn.com/problems/container-with-most-water/

木桶能装多少水取决于最短的木板。

方法一、双指针

左右指针,每次移动比较矮的一侧。

class Solution:def maxArea(self, height: List[int]) -> int:left,right = 0,len(height)-1max_area = 0while left<right:area = (right-left)*(min(height[right],height[left]))max_area = max(max_area,area)if height[left]>=height[right]:right-=1else:left+=1return max_area

0x003、三数之和

地址:https://leetcode-cn.com/problems/3sum/

方法一、排序+双指针

  • 长度小于3返回空列表
  • 排序
    • 取锚点元素,如果锚点元素大于0,代表后面没有三数和为零的元素,直接break,毕竟排过序
    • 取锚点元素后一个为左指针left,最后一个为右指针right
    • 循环 left<right
      • 三数和大于零,右边距向左移动一位
      • 三数和小于零,左边距向右移动一位
      • 三数和等于零,添加到result
        • 判断左右边距是否重合,left是否等于left+1
          • left+=1
        • 判断左右边距是否重合,right是否等于right-1
          • right-=1
        • 收缩左右边距
class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:lenght = len(nums)result = list()if lenght<3:return resultnums.sort()for i in range(lenght):if nums[i]>0:breakif i>0 and nums[i]==nums[i-1]:continueleft,right = i+1,lenght-1while left<right:flag = nums[i] + nums[left] + nums[right]if flag>0:right-=1elif flag<0:left+=1else:result.append([nums[i],nums[left],nums[right]])while left<right and nums[left]==nums[left+1]:left+=1while left<right and nums[right]==nums[right-1]:right-=1right-=1left+=1return result
console.log("公众号:虫术")
Blog:http://404nofoundx.top/

http://www.ngui.cc/el/3376900.html

相关文章

Docker布置mitmproxy镜像使用Python脚本拦截请求

​mitmproxy 就是用于 MITM 的 proxy&#xff0c;MITM 即中间人攻击&#xff08;Man-in-the-middle attack&#xff09;。用于中间人攻击的代理首先会向正常的代理一样转发请求&#xff0c;保障服务端与客户端的通信&#xff0c;其次&#xff0c;会适时的查、记录其截获的数据&…

20211209|每日算法—最接近的三数之和

疾风知劲草&#xff0c;板荡识诚臣。 勇夫安识义&#xff0c;智者必怀仁。 0x001、最接近的三数之和 地址&#xff1a;https://leetcode-cn.com/problems/3sum-closest/ 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它…

scrapy爬虫框架基本介绍

一、介绍 Scrapy 是一种快速的高级 web crawling 和 web scraping 框架&#xff0c;用于对网站进行爬网并从其页面提取结构化数据。它可以用于广泛的用途&#xff0c;从数据挖掘到监控和自动化测试。 二、架构 三、组件 Scrapy Engine 引擎负责控制数据流在系统中所有组件中…

smali语法基础详解

一、介绍 apk文件通过apktool反编译出来的都有一个smali文件夹&#xff0c;里面都是以.smali结尾的文件。 smali语言是Davlik的寄存器语言&#xff0c;语法上和汇编语言相似&#xff0c;Dalvik VM与JVM的最大的区别之一就是Dalvik VM是基于寄存器的。基于寄存器的意思是&#…

安卓逆向 | 某社交类APP shield

*本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除 一、分析执行流程 initializeNative()---->cPtr = initialize(str)----->intercept(Interceptor.Chain chain, long j2) 二、Unidbg public class xhs extends AbstractJni {private final Andro…

安卓逆向 | 某社交类APP gsid

*本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除 一、目标参数 gsid 二、抓包 表单里面必要的几个参数checktoken、mfp、appkey,其中appkey是固定值。 0x01、checktoken jadx搜索checktoken,跟进去发现个b方法,用r0tracer hook一下这个方法,根据抓…

安卓逆向 | 某新闻类APP sign

*本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除 一、抓包 POST请求,url和header里面都携带一个sign,url中的sign猜测可能是根据From表单进行的加密,修改参数,显示签名错误,header里面可能是根据时间戳进行的加密。 二、Header中的sign 1、Java层分…

安卓逆向 | 某新闻类APP sn

*本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除 一、抓包 通过抓包,然后转换成python代码,通过删除字段的方式确定加密参数为 st:猜测为时间戳sn:猜测根据时间戳加密二、脱壳 查壳工具查看有壳,用Frida-DEXDump脱壳,不会的可以点击传送门,开箱即用…

密码学 MD5信息摘要算法

一、简介 MD5信息摘要算法&#xff08;英语&#xff1a;MD5 Message-Digest Algorithm&#xff09;&#xff0c;一种被广泛使用的密码散列函数&#xff0c;可以产生出一个128位&#xff08;16字节&#xff09;的散列值&#xff08;hash value&#xff09;&#xff0c;用于确保…

mitmproxy:ImportError: DLL load failed while importing _brotli: 找不到指定的模块。

问题: ImportError: DLL load failed while importing _brotli: 找不到指定的模块。 ImportError: DLL load failed while importing _brotli: 找不到指定的模块。 ImportError: DLL load failed while importing _brotli: 找不到指定的模块。 解决方案: https://support.mi…