自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Python剑指offer系列】- 06.从尾到头打印链表

题目链接剑指 Offer 06. 从尾到头打印链表 - 力扣(LeetCode) (leetcode-cn.com)题目描述输入链表的头节点,按照从尾到头的顺序打印每个节点的值(用数组返回)示例输入:head = [1,3,2]输出:[2,3,1]解题思路一由于链表只能从前向后遍历访问每个节点,题目要求倒序输出节点的值。这类涉及到先入后出,顺序翻转的需求,可以考虑借助栈来实现。具体思路为从前到后遍历链表,将各节点的值写入栈中,完成后再依次将元素弹出。在Python中,

2021-05-25 15:58:23 267

原创 【Python剑指offer系列】-05. 替换空格

题目链接剑指 Offer 05. 替换空格 - 力扣(LeetCode) (leetcode-cn.com)题目描述实现一个函数,将字符串s中每个空格替换成“%20”.示例输入:“We are happy”输出:“We%20are%20happy”解题思路饿...

2021-05-25 11:10:06 288

原创 【Python-剑指offer系列】-04.二维数组中的查找

题目链接剑指 Offer 04. 二维数组中的查找 - 力扣(LeetCode) (leetcode-cn.com)题目描述给定n*m的二维数组,每一行都按照从左到右递增的顺序排序,每一列按照从上到下递增的顺序排序。请完成这样一个函数,输入这样的一个二维数组和一个整数,判断数组中是否有该整数。0<=n<=1000,0<=m<=1000。示例matrix =[[1, 4, 7, 11, 15], [2, 5, 8, 12, 19],...

2021-05-24 16:26:48 268

原创 【Python-剑指 Offer系列】 03. 数组中重复的数字

题目链接剑指 Offer 03. 数组中重复的数字 - 力扣(LeetCode) (leetcode-cn.com)题目描述长度为n的数组nums中的所有数字都在0~n-1范围内,数组中某些数字是重复的,但不知道有哪几个数字重复,也不知道数字重复几次。请找出数组中任意一个重复数字并返回。2=<n<=10^5。示例输入:[2,3,1,0,2,5]输出:2或3解题思路一如果要返回任意一个重复元素,在遍历数组的过程中需要判断当前遍历到的元素是不是在前面遇到过。考虑到

2021-05-24 11:26:01 288

原创 【leetcode-Python】-前缀和-724. 寻找数组的中心索引

题目链接https://leetcode.com/problems/find-pivot-index/题目描述给定整数数组nums,返回数组的 “中心索引” 。一个数组的“中心索引”满足其左侧所有元素相加的和等于其右侧所有元素相加的和(均不包含中心索引位置的元素)。如果数组索引为0(指向数组左边界),那么该数组下标左侧所有元素相加的和为0(左侧没有任何元素)。如果数组索引指向数组右边界是类似的情况。如果数组不存在中心下标,返回 -1 。如果数组有多个中心下标,应该返回最靠近左边的那一个。.

2021-04-17 01:44:17 184 2

原创 【leetcode-Python】-数学-263. Ugly Number

题目链接https://leetcode.com/problems/ugly-number/题目描述给定整数n,判断n是否为丑数。如果是,则返回true,否则返回false。丑数指质因数只包含2、3、5的数或质因数只包含2、3的数。-2^31<=n<=2^31-1示例输入:n=14输出:False14不是丑数,因为它包含了另一个质因数7。解题思路分情况讨论。首先n如果不是正整数,则一定不是丑数,即n<=0的情况直接返回False。如果n是正整

2021-04-12 22:32:48 131

原创 【leetcode-Python】-优先队列&多指针-264. Ugly Number II

题目链接https://leetcode.com/problems/ugly-number-ii/题目描述示例

2021-04-12 22:32:20 143

原创 【leetcode-Python】-数学-剑指 Offer 62. 圆圈中最后剩下的数字

题目链接剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣(LeetCode) (leetcode-cn.com)题目描述0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。1=<n<=10^5,1<=m<=10^6。

2021-04-12 16:33:20 204

原创 【leetcode-Python】-BST-235. Lowest Common Ancestor of a Binary Search Tree

题目链接https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/描述给定二叉搜索树BST,找出该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:”对于树T的两个节点p和q,最近公共祖先表示为一个节点x,满足x是p、q的祖先且x的深度尽可能大。(一个节点也可以是它自己的祖先)。所有节点的值都唯一,p、q为不同节点且均存在于给定的BST中。示例输入:root = [6,2,8,0

2021-04-09 14:08:09 104

原创 【leetcode-Python】-后序遍历+回溯-236. Lowest Common Ancestor of a Binary Tree

题目链接https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/题目描述给定一个二叉树,找到该树中两个指定节点p、q的最近公共祖先。树中所有节点的值都唯一,p、q为不同节点且均存在于给定的二叉树中。示例输入:root = [3,5,1,6,2,0,8,null,null,7,4],p=5,q = 1输出:3节点1和节点5的最近公共祖先是节点3。解题思路对于二叉树问题,逃不开二叉

2021-04-09 13:04:38 169

原创 【leetcode-Python】-回溯-复原IP地址

题目链接https://leetcode.com/problems/restore-ip-addresses/题目描述有效 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "[email protected]" 是 无效 IP 地址。给定一个只包含数字的字符串,想要用'.'分割字符串

2021-04-08 16:48:31 403

原创 【leetcode-Python】-快慢指针- 19. Remove Nth Node From End of List

题目链接https://leetcode.com/problems/remove-nth-node-from-end-of-list/题目描述给定一个链表,删除链表的倒数第n个节点后返回链表的头节点。示例输入:head = [1,2,3,4,5],n=2输出:[1,2,3,5]解题思路一此题可以借助快慢指针,一次遍历就得到结果。fast指针先走n步,指向第n个节点(头节点为第1个节点)。slow指针指向头节点。那么fast和slow指针中间隔着n-1个节点。fast指

2021-04-07 22:39:50 165

原创 【leetcode-Python】-快慢指针-142. Linked List Cycle II

题目链接https://leetcode.com/problems/linked-list-cycle-ii/题目描述给定一个链表,如果链表中有环,返回链表中环的起始位置。如果没有环则返回null。示例给定链表:输出:1(索引为1的节点为环的起点)解题思路首先我们通过【leetcode-Python】-快慢指针-141. Linked List Cycle判断链表中是否有环,fast指针一次走两步,slow指针一次走一步,如果发现fast指针和slow指针相遇则跳出.

2021-04-07 21:12:48 141 2

原创 【leetcode-Python】-快慢指针-141. Linked List Cycle

题目链接https://leetcode.com/problems/linked-list-cycle/题目描述给定一个链表,判断链表中是否有环。如果链表中存在环,则返回 true 。 否则返回 false 。示例对于给定链表:返回True。解题思路快慢指针常用于解决链表数据结构的一些问题,判定链表是否有环是快慢指针的经典应用。由于单链表中每个节点只指向下一个节点, 只用一个指针无法判断链表中是否含有环。我们可以用两个指针fast和slow,其中fast指针每次前进.

2021-04-07 20:44:25 164

原创 【leetcode-Python】-找数学规律-LCP 29. 乐团站位

题目链接题目描述某乐团的演出场地可视作 num * num 的二维矩阵 grid(左上角坐标为 [0,0]),每个位置站有一位成员。乐团共有 9 种乐器,乐器编号为 1~9,每位成员持有 1 个乐器。为保证声乐混合效果,成员站位规则为:自 grid 左上角开始顺时针螺旋形向内循环以 1,2,...,9 循环重复排列。例如当 num = 5 时,站位如图所示:请返回位于场地坐标 [Xpos,Ypos] 的成员所持乐器编号。1<=num<=10^9,0<=xPos,yPos

2021-04-07 16:52:37 249 1

原创 【leetcode-Python】-双指针-LCP 28. 采购方案

题目链接https://leetcode-cn.com/problems/4xy4Wx/题目描述小力将 N 个零件的报价存于数组 nums。小力预算为 target,假定小力仅购买两个零件,要求购买零件的花费不超过预算,请问他有多少种采购方案。注意:答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1。示例输入:nums = [2,2,1,9],target = 10输出:4符合预算的采购方案如下:nums

2021-04-07 09:43:13 170 1

原创 【leetcode-Python】-滑动窗口-209. 长度最小的子数组

题目链接https://leetcode.com/problems/minimum-size-subarray-sum/题目描述给定一个正整数数组nums和正整数target,找出nums中元素和大于等于target的最短子串,如果没有符合条件的子串,则返回0。示例输入:target = 7,nums = [2,3,1,2,4,3]输出:2子串[4,3]是满足条件的最短子串。解题思路此题求最短子串,可以由滑动窗口算法来求解。如果窗口内元素和小于target,则子串.

2021-04-06 09:48:56 175

原创 【leetcode-Python】-滑动窗口-1208. 尽可能使字符串相等

题目链接https://leetcode.com/problems/get-equal-substrings-within-budget/题目描述给定两个长度相同的字符串s和t。将s[i]变为t[i]需要|s[i]-t[i]|的开销(开销可能为0),即两个字符ASCII码值的差的绝对值。用于变更字符串的最大预算是maxCost,在转化字符串时,总开销应当小于等于该预算。如果可以将s的某个子串转化为t中对应的子串,返回可以转化的最大长度。如果s中没有子字符串可以转化成t中对应的子字符串,则返回0。

2021-04-06 09:26:13 168

原创 【leetcode-Python】-最大连续1的个数

题目链接https://leetcode.com/problems/max-consecutive-ones/题目描述给定二进制数组,计算其中最大连续1的个数。示例输入:[1,1,0,1,1,1]输出:3解题思路一可以通过一次遍历实现,记录当前最大的连续1的个数maxcount和当前连续1的个数curcount。如果当前元素为1,就让curcount新增1,并更新maxcount,如果当前元素为0,就将curcount置为0,等下次遇到1再新增。Python实现

2021-04-06 08:25:13 749

原创 【leetcode-Python】-滑动窗口-1004. 最大连续1个数 III

题目链接https://leetcode-cn.com/problems/max-consecutive-ones-iii/题目描述给定由若干个0个1组成的数组A,我们最多可以将K个值从0变成1。返回仅包含1的最长(连续)子数组的长度。示例输入:A = [1,1,1,0,0,0,1,1,1,1,0],K=2输出:6将索引为5和10的0替换为1,得到仅包含1的最长连续子数组长度6,替换后的数组为 [1,1,1,0,0,1,1,1,1,1,1]。解题思路Python.

2021-04-06 08:24:14 214 1

原创 【leetcode-Python】-滑动窗口-1493. Longest Subarray of 1‘s After Deleting One Element

题目链接https://leetcode-cn.com/problems/longest-subarray-of-1s-after-deleting-one-element/题目描述给定二进制数组,需要从中删除一个元素。请你再删掉某个元素后得到的结果数组中,返回最长的且只包含1的非空子数组的长度。如果不存在这样的子数组,请返回0。示例输入:nums = [1,1,0,1]输出:3删掉索引为2的数字0后,[1,1,1]包含3个1。解题思路此题和【leetcode-Py.

2021-04-05 20:27:26 194 1

原创 【leetcode-Python】-滑动窗口-424. Longest Repeating Character Replacement

题目链接https://leetcode.com/problems/longest-repeating-character-replacement/题目描述给定仅由大写英文字母组成的字符串s,可以将任意位置上的字符替换为其他字符,最多可以替换k次。在执行上述操作后,找到包含重复字母的最长子串的长度。字符串长度和k不会超过10^4。...

2021-04-05 19:09:45 268

原创 【leetcode-Python】-滑动窗口-992. Subarrays with K Different Integers

题目链接https://leetcode.com/problems/subarrays-with-k-different-integers/题目描述给定一个元素均为正整数的数组A,如果A的某个子数组(元素索引连续,且可以有重复元素)中不同整数的个数恰好为K,则称A的这个子数组为好子数组。返回A中好子数组的数目。示例输入:A=[1,2,1,2,3],K=2输出:7恰好由2个不同整数组成的子数组: [1,2],[2,1],[1,2],[2,3],[1,2,1],[2,1,2],[1

2021-04-04 16:34:17 268 4

原创 【leetcode-Python】-滑动窗口-30. Substring with Concatenation of All Words

如何判断某个单词是否完整地出现在窗口中?将原来的字符看作单词即可。单词的长度相同。还是需要看看经典算法。

2021-04-03 11:46:11 89 1

原创 【leetcode-Python】-滑动窗口-3.无重复字符的最长子串

题目链接https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/题目描述给定一个字符串,请找出其中不含有重复字符的最长子串的长度。示例输入:s="abcabcbb"输出:3s中无重复字符的最长子串为“abc”解题思路此题仍是子串问题,我们可以利用滑动窗口算法来解。由于我们只需要保证子串里没有重复字符,因此此前【leetcode-Python】-滑动窗口-76. Mi

2021-03-29 10:37:52 232

原创 【leetcode-Python】-滑动窗口-438. Find All Anagrams in a String

题目链接https://leetcode.com/problems/find-all-anagrams-in-a-string/题目描述给定一个字符串s和一个非空字符串p,找到s中所有是p的字母异位词的子串,返回这些子串的起始索引。字母异位词指字母相同,但排列不同的字符串。字符串只包含小写英文字母,并且字符串s和 p的长度都不超过 20100。不考虑答案输出的顺序。示例输入:s:"cbaebabacd" p:"abc"输出:[0,6]起始索引等于 0 的子串...

2021-03-28 17:23:00 111

原创 【leetcode-Python】-滑动窗口-567. Permutation in String

题目链接https://leetcode.com/problems/permutation-in-string/题目要求给定两个字符串s1和s2,写一个函数判断s2是否包含s1的排列。即判断是否存在s1的某个排列是s2的子串。输入的字符串只包含小写字母。示例输入:s1="ab",s2= "eidbaooo"输出:Trues2包含s1的排列之一("ba")解题思路由于排列并不会改变字符串中各个字符的个数,因此如果两个字符串中各个字符个数相等(没有多余字符),一个字符串才

2021-03-28 16:32:48 146

原创 DIN模型学习笔记

模型背景用户在访问电商网站时,会表现出兴趣的多样性。但用户是否点击当前的商品或广告,很大程度上依赖于其历史行为,并且仅仅取决于历史行为中的一小部分。而在之前如Wide&Deep、DeepFM之类的CTR预估模型中,首先学习各个特征的embedding表示,将高维度稀疏数据转换为低维度的向量表示,然后学习低维的特征交互和高维的非线性关系。但是这些研究没有针对用户历史行为特征进行建模。DIN模型在这种背景下被提出,对用户历史行为特征进行建模,捕捉用户历史行为和当前商品之间的关联,更准确地进行推荐

2021-03-28 00:18:42 916 1

原创 【leetcode-Python】-滑动窗口-76.最小覆盖子串

题目链接https://leetcode.com/problems/minimum-window-substring/题目描述给定一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。如果 s 中存在这样的子串,能够保证它是唯一的答案。示例输入:s=“aab”,t="aa"输出:“aa”解题思路滑动窗口属于双指针算法的一种,适合解决子串问题(查找满足一定条件的连续区间的性质(如长.

2021-03-27 21:29:35 407 2

原创 Python输入输出练习总结-牛客网

由于一些企业的笔试需要在代码里处理样例的输入输出,而不是像leetcode那样直接写函数就可以。因此在牛客网上进行了专项练习。下面就Python语言在处理输入时的一些常用函数。1、处理键盘输入:input()在Python3中,input() 函数接收任意类型的输入,将所有输入默认为字符串处理,并返回字符串string 类型。因此输入的数字需要转换类型。建议在键入时就进行类型转换,避免后续忘记。当仅接收一个整数输入时,可以直接写:a = int(input())利用input一次性输入多个

2021-03-26 17:00:58 2111

原创 【leetcoded-Python】-BFS-752. Open the Lock

题目链接https://leetcode.com/problems/open-the-lock题目描述给你一个带有4个圆形拨轮的转盘锁。每个拨轮有10个数字:'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为'0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 '0000' ,一个代表四个拨轮数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮数字和列..

2021-03-26 13:23:19 100

原创 【leetcode-Python】-BFS(有模板)-111. Minimum Depth of Binary Tree

题目链接https://leetcode.com/problems/minimum-depth-of-binary-tree/题目描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。示例输入:root = [3,9,20,null,null,15,7]输出:2解题思路一般求一个节点到另一个节点的最少步数(最短距离问题),会优先考虑BFS。在BFS算法中,需要从问题中抽象出图来,从图的某个顶点V0出发,首先访问和V0相邻且未被访问过的

2021-03-26 11:04:55 109 1

原创 【leetcode-Python】-贪心-406. Queue Reconstruction by Height

题目链接https://leetcode.com/problems/queue-reconstruction-by-height/题目描述假设一群人打乱顺序站成一个队列,数组 people 表示队列中人的一些属性(不一定按顺序)。people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面正好有 ki 个身高大于或等于 hi 的人。请你构造并返回输入数组people 所表示的队列。返回的队列表示为数组 queue ,其中 queue[j] = [hj, kj] 是队列..

2021-03-25 10:28:00 103 1

原创 【leetcode-Python】-贪心-135. Candy

题目链接题目描述示例

2021-03-25 10:27:39 118 1

原创 NFM学习笔记

模型介绍由于FM模型只能以线性的方式学习两两特征之间的交互关系,无法捕捉现实数据的复杂结果。因此尽管DeepFM将FM和DNN并行设计,也无法很好地捕捉低阶特征。因此这篇文章提出了一种将FM融合进DNN的模型NFM(Neural Factorization Machines for Sparse Predictive Analytics)。FM模型中目标值的预测公式为:NFM模型的目标值预测公式为:可以看到,NFM用f(x)替代了FM模型中二阶隐向量内积的部分,即让f(x)更复杂,表

2021-03-24 21:40:42 151

原创 【leetcode-Python】-贪心-621. Task Scheduler

题目链接https://leetcode.com/problems/task-scheduler/题目描述给定字符数组tasks,表示CPU需要执行的任务列表。不同的字母表示不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在1个单位时间内执行完。在任何一个单位时间,CPU可以完成一个任务,也可以处于待命状态。但是两个相同种类的任务之间必须有长度为整数n的冷却时间,因此至少有连续n个单位时间内CPU在执行不同的任务,或者在待命状态。计算完成所有任务所需的最短时间。示例输入:

2021-03-24 14:32:05 228

原创 【leetcode-Python】-贪心-763. Partition Labels

题目链接https://leetcode.com/problems/partition-labels/题目描述给定由小写字母组成的字符串S,将字符串划分为尽可能多的片段,使同一字母最多出现在一个片段中。返回一个表示每个字符串长度的列表。示例输入:S=“ababcbacadefegdehijhklij”输出:[9,7,8]划分结果为"ababcbaca","defegde","hijhklij" 。每个字母最多出现在一个片段中。如果划分为"ababcbacadefegde",

2021-03-23 16:57:26 94

原创 DeepFM学习笔记

背景CTR预估是推荐系统的核心技术之一。对于CTR问题,更好地学习特征组合能够有效提升模型效果。特征包括用户行为的低阶特征和高阶特征。低阶特征可以由人工构造(如Wide&Deep模型),高阶特征可以由神经网络学习得到,由全连接层实现高阶特征的组合。很显然,低阶特征和高阶特征需要分别进行处理。例如在FNN模型中,首先预训练一个FM模型得到每个特征的Embedding向量,然后再输入多个全连接层。由于FM和DNN的串行结构。这个模型没有学到多少低阶特征组合。Wide&Deep模型将低阶特征的

2021-03-21 20:28:15 468

原创 【leetcode-Python】-贪心-55. Jump Game

题目链接https://leetcode.com/problems/jump-game/题目描述给定非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素表示你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。如果能,返回true,否则返回false。示例输入:[2,3,1,1,4]输出:true可以先跳一步,从位置0到达位置1,然后从位置1跳3步到达最后一个位置。解题思路这道题目可以理解为“按照给定的规则跳跃,最远可以到达哪里”。如果最远可

2021-03-20 22:07:16 111

原创 【leetcode-Python】-动态规划&贪心-45. Jump Game II

题目链接https://leetcode.com/problems/jump-game/题目描述给定非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素表示你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。如果能,返回true,否则返回false。示例解题思路动态规划算法有一部分适用的题目为“求最值”,如最长回文子串:【leetcode-Python】- Dynamic programming-516. Longest Palindromic Sub

2021-03-20 22:06:41 304

空空如也

空空如也

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

TA关注的人

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