自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 LeetCode-二维数组中的查找

二维数组中的查找 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路 注意题目说明从左到右和从上到下递增,所以可以用两个索引(i,j)控制行列数 当 matrix[i][j] > target,说明该行都大于target,则可以排除该行,往上重新开始 当 matrix[i][j] < target,说明该列都小于target,则可以

2021-11-12 18:18:57 749

原创 LeetCode-从上到下打印二叉树 III

从上到下打印二叉树 III 从上到下打印二叉树 III 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 思路 总体和层次遍历一致,只是多了个判断而已 利用 双端队列 实现,Python——collections中的deque,C++——STL中的deque 偶数层:需要从左到右打印 奇数层:需要从右到左打印 辨别偶奇数层,可添加一个标志flag来辨别。flag=True为偶数,false为奇数,奇数时

2021-11-10 20:57:25 211

原创 LeetCode-上到下打印出二叉树

上到下打印出二叉树 上到下打印出二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 思路 说白了就是层次遍历 借助队列 先进先出 的特点,遍历二叉树,一个个入队 collection def levelOrder(self, root): res = [] q = collection.deque() if root: #若root不为空,则往队列添加结点root q.append(root)

2021-11-08 21:50:42 210

原创 LeetCode-移除元素

移除元素 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 示例 1: 输入:nums = [3,2,2,3], val = 3 输出:2, nums = [2,2] 思路 双指针,一个指针 fast 专门来遍历,另一个指针 slow 是存放元素的下标 当 fast 遍历到与val 不同时,将num [fast] 给到 num [slow],slo

2021-11-04 15:17:33 805

原创 LeetCode-加一

加一 加一 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123 思路 情况1:数字0-8 情况2:数字9、99、999 从后往前遍历 当是 情况1 时,直接 +1 即可,一循环直到找到无进位直接返回 当是 情况2 时,+1 会进位,则该位数为0,进位为1,需要自行

2021-11-03 17:41:52 183

原创 LeetCode-第一个只出现一次的字符

第一个只出现一次的字符 第一个只出现一次的字符 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 示例 1: 输入:s = “abaccdeff” 输出:‘b’ 思路 利用 哈希表 ,Python使用字典 key-value 遍历两次 第一次遍历,填充字典,默认value填充False,key是字符,遍历时发现有重复字符则将其value改为True 第二次遍历,查找只出现一次的字符,即查找第一个value为False的字符 def firstUniqChar(

2021-11-02 14:32:17 321

原创 0~n-1中缺失的数字

0~n-1中缺失的数字 0~n-1缺失的数字 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 思路 注意,题干说明 递增排序数组,即下标0对应数值0,下标1对应数值1…… 所以考虑特殊情况即可 def missingNumber(self, nums): if nums[0] == 1: return 0 for i in range

2021-11-02 09:59:36 168

原创 LeetCode-左旋转字符串

左旋转字符串 左旋转字符串 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1: 输入: s = “abcdefg”, k = 2 输出: “cdefgab” 思路 方法1.切片,利用字符串 str = [ i:j:k] 方法2.字符串追加,str.join() 方法3.反转 列表list内置方法——list.reverse(),返回值None

2021-11-01 15:03:03 212

原创 LeetCode-替换空格

替换空格 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = “We are happy.” 输出:“We%20are%20happy.” 思路 利用 join() 函数 连接字符串 字符串利用join() 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 列表利用extend() 向列表尾部追加一个列表,将列表中的每个元素都追加进来,在原有列表上增加,+=也可以实现相同效果 append()是向列表尾部追加一个新

2021-10-29 17:55:30 122

原创 LeetCode-反转链表

反转链表 反转链表 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 思路 递归做法,得到新链表 def reverseList(self, head): # 若链表为空 或 链表下个节点为空 if not head or head.next==None : return

2021-10-29 10:12:20 133

原创 LeetCode-包含min函数的栈

包含min函数的栈 包含min函数的栈 思路 创建多一个新栈(存放最小元素的栈)来辅助。 因为要返回最小元素,所以插入时多考虑情况 情况1.最小栈为空,元素直接插入最小栈 情况2.插入元素 < 最小栈栈顶,元素直接入最小栈 情况3.插入元素 >= 最小栈栈顶,最小元素再次入最小栈 出栈时,需要两个栈同时出栈,保持一致性 def __init__(self): self.myMin = [] self.data = [] """

2021-10-28 18:17:06 169

原创 LeetCode-两个栈实现队列

两个栈实现队列 两个栈实现队列 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。 (若队列中没有元素,deleteHead 操作返回 -1 ) 思路 队列:先进先出 栈:先进后出 两个栈,一个用来存放数据,一个用来辅助 队列尾部插入:先将data栈中数据移到helper栈中,再将插入的数值入data栈,最后将helper数据搬回data,从而实现先进后出的原则 队列头部删除:因data栈已是队

2021-10-27 20:15:37 2720

原创 LeetCode-最长公共前缀

最长公共前缀 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 思路 通过字符串比较方法,字符串的比较是使用的字典序,而不是长度 比如 a,aa,aab,aac, aaa 最大字符串是aac,最小字符串是a,那么最大最小字符串的公共前缀就是原字符串的公共前缀 再如 aaa,aab,aac,abc,b 最大字符串是abc,最小字符串是b,那么公共前缀是“” def longestCommonPrefix(self, strs):

2021-10-27 10:42:43 1780

原创 LeetCode-有效的括号

有效的括号 有效的括号 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 思路 利用 栈 的特点,先进后出 遍历字符串,遇到左括号就入栈右括号,若与栈元素相同则出栈 第一种情况:栈为空,说明有多余括号 第二种情况:栈的元素和字符串元素不匹配 第三种情况:遍历完字符串后栈不为空,说明有左括号没有右括号可匹配 Python中没有栈,可用List代替。 def isVali

2021-10-26 20:56:36 266

原创 LeetCode-回文数

力扣-回文数 链接:回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,而 123 不是。 思路1 通过原数字取出每位数,实现反转 需注意,数字位数(长度)可以是偶数个或奇数个 偶数个:它对折过来应该是相等的;即reverNum=x 奇数个:那么它对折过来后,有一个的长度需要去掉一位数(除以 10 并取整) 即reverNum/10 == x def isPalindrome

2021-10-26 18:11:17 284

原创 Python+selenium(1)

这里我使用chrome浏览器和pycharm,需下载对应浏览器版本chromedriver.exe配合使用(复制到python安装目录下即可)。其他环境默认已搭建哈 1. 首先肯定先打开浏览器。 from selenium import webdriver driver = webdriver.Chrome() #初始化driver对象 2. 再打开网页 url = "https://www.baidu.com" driver.maximize_window() #最大化窗口 dri

2021-06-05 10:45:12 112

原创 set、multiset、unordered_set

**std::set:**元素不重复,默认有 从小到大的排序(底层红黑树) **std::multiset:**存储的元素可重复,默认有从小到大的排序(底层红黑树) **std::unordered_set:**容器内的元素无序排列,基于值进行获取单个元素速度非常快(哈希表) 若想读写效率是最高的,并不需要对数据进行排序,而且还不要让数据重复,使用unordered_set 例题:https://leetcode-cn.com/problems/intersection-of-two-arrays/ 给定两

2020-11-02 12:46:44 267

原创 Keep,Note.1

1、获取环境变量: char* getenv(const char* name) 成功就返回环境变量的值,失败返回NULL (include <stdlib.h>) include <stdio.h> #include <stdlib.h> int main() { printf("homepath is [%s]\n",geienv("home")); return 0; } 2、进程 创建一个新的进程 pid_t fork(void); 返回值:失败

2020-10-28 23:21:24 171

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除