自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Python面向对象

第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法。从执行结果可以很明显的看出,self 代表的是类的实例,代表当前对象的地址,而 self.__class__ 则指向类。在类的内部,使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数。self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。在类内部的方法中使用时。

2023-08-17 09:34:51 374 1

原创 python学习----File文件方法、异常处理

通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。

2023-08-17 08:53:11 397

原创 python 学习3----函数、模块及文件i/o,file

1、定义函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。2、定义函数的语法3、函数的调用定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。3、参数传递在python中,类型属于对象,变量是没有类型的。

2023-08-16 18:02:23 316

原创 python学习2----变量类型与基本语法

如果你要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。字典(dictionary)是除了列表以外,python中最灵活的内置数据结构,列表是有序的对象集合,字典是无序的对象集合。这些函数返回一个新的对象,表示转换的值。

2023-08-16 17:14:54 143

原创 python学习1----连接Mysql

3、调用cursor()函数构建数据库光标,用来执行Mysql语法。5、最后采用fetchhall()函数 返回显示 sql执行结果。4、使用构建的数据库光标调用excute()函数,执行sql。2、pymysql.connect连接数据库。1、导入pymysql包。

2023-08-16 15:10:27 64

原创 2022/4/10拼多多后端开发笔试

只会做第一题1、题目:多多有一堆鹅卵石,总数为n。多多想用这些鹅卵石装饰自己的院子,所以他将这些鹅卵石拍成了一排(位置从1开始),并且为每个鹅卵石涂上了颜色,我们使用正整数表示颜色的种关,第i个鹅卵石的颜色为ai现在多多想知道,有哪些颜色出现在这一排鹅卵石中,并且所有出现的位置从小到大排列是-个等差数列。2、实例:输入31 2 1输出21 22 0说明:总共出现了两种颜色满足位置等差排列。颜色1,出现了两次,位置为别为1和3,分布的间隔为2。颜色2,只出现

2022-04-10 23:05:46 686 1

原创 上海银行_2022/4/7笔试

1题目2、求解import java.util.*;public class helloo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] str = new String[] {"abc123","abc+1234","ababab--1","abab--12345"}; Map<String,

2022-04-07 23:53:32 620

原创 华为笔试4月6

第一题:统计舆论热词,输出前topN个次,空格隔开陪跑2小时 最后0分会做第一题,奈何最后结果的最后一个空格要删掉,一直没发现,导致陷入死循环,,白搭!!算法分析:关键点,存在优先顺序,标题的热词优先级高,即当某几个热词出现的频率一样的时候,优先输出标题的热词,其次才轮到 正文的热词。其二,标题热词的比重*3,,正文的热词比重*1所以 我们优先考虑 先把标题的热词放入map中,标题热词没出现一次,比重+3标题的词语遍历结束后,才轮到正文的热词,出现一次,比重+

2022-04-06 21:31:48 1230 6

原创 分糖果问题-----medium

1、题目描述力扣原题:原题链接优秀题解:二分搜索类问题力扣https://leetcode-cn.com/problems/maximum-candies-allocated-to-k-children/solution/by-relll-1037-dhhf/2、代码:class Solution { public int maximumCandies(int[] candies, long k) { //二分法 分糖果 int max =

2022-04-04 11:46:04 1266

原创 并查集算法总结

1、并查集定义并查集是一种数据结构,常用来描述集合。在一些应用的问题中,需将n个不同的元素划分成一组不相交的集合。开始时,每个元素自成一格单元素集合,然后按一定顺序将属于同一组的元素的集合合并。其间要反复用到查询某个元素属于哪个集合的运算。适合于描述这类问题的抽象数据类型称为并查集。2、并查集可以解决的常规问题(1)某个元素是否属于某个集合;(2)某两个节点是否属于同一个集合(亲戚关系判断)(3)判断图是否有环问题3、并查集的分类(1)Union-find 简单并查集(2).

2022-03-21 11:39:38 2282

原创 字节跳动 2022/3/20笔试

题目1import java.io.*;import java.util.*;class Test{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); String[] str = s.split(" "); int n..

2022-03-20 20:58:55 1159 2

原创 360笔试2022.3.19

1、题目描述基本思路就是 遍历每一个点,看该点的左右邻居是不是比当前点小,看当前点左右可以延伸多远。import java.io.*;import java.util.*;class Test{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n =sc.nextInt(); int[] h =

2022-03-19 17:14:41 510

原创 便利蜂2022.3.17笔试

题目一1、题目描述2、算法分析2.1、直接暴力总的空间是Y,现在有N个物品,每个物品的占用空间为P,数量为NUM。现在想要满足在不超过Y的条件下,能够放进去最多的物品数量是多少?我们可以容易想到,要想在总空间一定的条件下,尽可能的放进去更多的物品,那么我们应该优先选择占用空间小的物品,当这些物品选完了,然后总空间还有剩余,我们才进一步考虑占用空间大的其他物品。import java.io.*;import java.util.*;class Test{ pub

2022-03-17 21:46:20 4343

原创 字节跳动2022.3.13笔试

题目11、题目描述2、算法分析gg,题目没读懂!------------------------------------------------------------------------------------------------------------------题目2:1、题目描述2、算法分析首先根据题意,从当前点到下一个目标点的时候,首先是先跳一步,然后如果没有到达target位置,那么后续跳的距离是前一次距离长度+1;然后,还..

2022-03-13 21:26:35 3221 5

原创 美团2022.3.12笔试

题目1.1、算法分析:这些数字至少满足以下两个特征中的一种:数字是11的整数倍。 数字中至少包含两个1。2、代码:import java.io.*;import java.util.*;class Test{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine();

2022-03-13 10:29:01 1707

原创 DP----回文串+最长回文子序列

一、回文串1、题目描述力扣原题2、算法分析1)dp含义boolean类型的dp表示 区间范围[i,j]内的子串是否是回文串 ,如果是dp[i][j]为true,否则为false,最后再统计dp中true的个数就是原数组回文串的个数;2)递推公式在确定递推公式前,我们需要明确几种情况:整体上就是两类情况,s[i]与s[j]是否相等当s[i]和s[j]不相等,那么dp[i][j]一定为false...

2022-03-11 12:10:13 799

原创 剪绳子求最大乘积----类似于上升子序列dp思想

1、原题牛客网链接2、分析:2.1 数学分析import java.util.*;public class Solution { public int cutRope(int n) { //特殊情况 if(n==2){ return 1; }else if(n==3){ return 2; } if(n%3==0){ .

2022-03-08 21:13:44 638

原创 美团23届实习(3月5号)笔试题解

题目11.1、题目分析其实本题和最长递增子序列的求解一模一样。可以利用动态规划来快速实现。为了能够找到可重集中 最大的不连续子集的大小,我们先对原始数据升序,然后dp:1)dp[i]含义:表示i之前包括i的最长上升子序列的长度。即下标i对应元素包含在内的不连续子集最大长度;2)递推公式:dp[i] = Max(dp[i],dp[j]+1),在满足条件下(nums[i]>nums[j]+1...

2022-03-07 21:04:14 1659

原创 和为s的连续正数序列

1、题目描述牛客网原题2、算法分析双指针技术,就是相当于有一个窗口,窗口的左右两边就是两个指针,我们根据窗口内值之和来确定窗口的位置和宽度。双指针的出口是当低位指针low=(sum+1)/2开始及以后都将不存在能够满足和为sum的连续正序列。3、代码import java.util.ArrayList;/*在答案区找到一个答案,说的很好,叫做双指针技术,就是相当于有一个窗口,窗口的左右两边就是两个指针,我们根据窗口内值之和来确定窗口的位置和宽度。非常牛逼的思路,虽然双指

2022-03-07 20:11:48 65

原创 阿里题练——挑最多的物品(DP+二分法)

1、原题描述2、算法分析根据题目和实例的分析,我们可以发现,假如我们先选了物品1,要想加入下一件物品,加入的该件物品必须保证x,y都大于物品1的,再选下一件物品判断是,也要保证这种x,y的严格大。换句话说,我们每选择一件物品,都要保证该物品加入后物品之间x,y是严格递增的,其实也就等效于 求解给定物品中的最长递增子序列的长度。因为这里需要对x,y两个变量的判断,所以我们可以控制变量,首先 按x对节点进行升序排序,然后从排序好的节点中挑选出y严格递增的最长序列长度 也就是最终能够选择.

2022-03-05 21:37:27 606

原创 最长上升子序列——DP、二分法

1、题目描述https://leetcode-cn.com/problems/longest-increasing-subsequence2、解题思路2.1 DP动态规划根据题意。我们可以发现,下标i处的最长上升子序列长度与前面下标的最长上升子序列长度有关。 比如nums[i]>nums[j] 那么 此时i位置的最长上身子序列长度等于 j位置最长序列长度+1;动态规划五部曲:1、dp[i]的含义:dp[i]表示从0~i下标范围内的最大上升子序列的长度;2、状态转移

2022-03-05 20:10:06 1576

原创 DP树——打家劫舍III + 美团笔练

1、题目:1)力扣打家劫舍III2)美团笔试练题:2、DP树树DP,也就是在树上进行的DP。因为树固有的递归属性,所以树DP一般都是递归进行的。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解;而树的一些特点和性质有:3、力扣打家劫舍分析3.1题目描述3.2、算法分析本题直观题意就是,一个二叉树,每个节点都有对应的权值,每个点都有选和不选两种状态,要求是直接相邻的两个节点不能同时被选(存在父子关系的...

2022-03-04 17:39:25 338

原创 美团笔试练习题2----寻找并返回字符串中所有数字

1、问题描述2、算法分析方法1::::1)我们要把所有的数字子字符串都返回,可考虑存储结构来保存提取出来的所有数字,因为不知道原字符串中会有多少个数字,且返回升序结果,所以我们采用了优先队列(最小堆heap)来存得到的每一个数字;2)具体的处理过程其实和《美团笔试练题1》的思维一致,记录当前数字字符串的结尾和长度,然后分割出来;3、代码import java.io.*;import java.util.*;class test { public static vo

2022-03-02 12:09:08 233

原创 美团笔试练题1----在字符串中找出连续最长的数字串

1、题目描述2、算法分析最直观的思路是把数字字符串全都提取出来,然后取出最大的字符串,但这样有些麻烦,引入更大的空间复杂度;另一个思想,我们想到了函数string.substring(a,b),通过下标a,b把子字符串提取出来,那么本题要求最大的数字子字符串,我们可以维护一个数字字符串的最大长度和该子字符串结束的下标,然后通过substring()函数返回该字符串中的最大数字子字符串。3、代码(ACM模式---自己构建输入输出)import java.io.*;import ja

2022-03-02 11:17:44 157

原创 常见排序算法归纳

1、常见的排序算法:冒泡、选择、插入、快速、归并、堆排序等2、展开分析:(1)冒泡排序通过比较相邻两个元素的大小进行互换的排序,每趟排序至少有一个元素处在正确的位置。平均时间复杂度O(n^2),空间复杂度O(1),稳定 。双层训环,外层循环控制数组需要排序的趟数,每执行一趟,当前数组最大值沉底,然后沉底的最大值就不用再参与下一趟排序(换句话说,内层循环随着排序趟数增加,内层循环范围逐渐缩小)。算法原理: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对

2022-02-27 16:55:29 235

原创 二叉搜索树的后序遍历序列 (判断某个数组是不是后序遍历)

1、原题:牛客网--二叉搜索树的后序遍历序列2、分析首先我们要明晰搜索二叉树的特性,其次是后序遍历。1)搜索二叉树,root节点划分了左右子树,左子树的值《root《右子树的值;2)后序遍历结果的最后一个值是root节点;所以我们很容易想到 分治的方法:1)先根据后序遍历的结果,得到root节点;2)再根据root节点的值把遍历数组划分为两半,对应搜索树的左右子树,此时要满足,左子树所有值小于root,右子树所...

2022-02-23 11:50:50 766

原创 栈的压入、弹出序列

1、问题描述:两个序列,第一个是压栈顺序,要判断第二个序列是不是该压栈顺序的某一个出栈顺序;牛客网--栈的压入、弹出序列2、分析为了更加清晰的结束算法逻辑,举例如下:【思路】借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元素是不是出栈顺序的第一个元素,这里是4,很显然1≠4,所以我们继续压栈,直到相等以后开始出栈,出栈一个元素,则将出栈顺序向后移动一位,直到不相等,这样循环等压栈顺序遍历完成,如果辅助栈还不为空,说明弹出序列不是该栈的弹出顺序。..

2022-02-23 11:40:13 352

原创 两个栈实现一个队列功能

1、原题:牛客网--用两个栈实现队列2、分析我们知道 栈是“先进后出” 队列是“先进先出”,我们可以通过两个栈的进出栈转换 来实现队列的功能。即一个栈负责存入数据,模拟队列添加数据;另一个栈负责输出数据,模拟队列出队。3、代码public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); //模拟入队 Stack<Integer> stack2 = ne.

2022-02-23 10:48:03 270

原创 递归之重建二叉树(先序+中序->重建二叉树)

1、原题:牛客网---重建二叉树2、分析首先涉及到二叉树的,特别是与遍历有关的,大家一定要有一个意识,那就是递归,代码简洁。然后,要想根据遍历结果重建这棵二叉树,我们必须要清晰二叉树不同顺序遍历的结果特征:1)先序遍历的第一个节点 是二叉树的根节点2)根据先序找到根节点,然后再到中序遍历中查看根节点的位置,从而可以把中序遍历中根节点左边的划分为左子树,右边的划分为右子树3)划分出中序的左子树与先序属于左子树的部分,再次递归步骤1)、2)逐层递归直到节点为null,,那么此时roo

2022-02-22 10:25:04 571

原创 二叉树——搞懂递归内部逻辑

递归,顾名思义,就是自己调用自己的过程。(1)针对二叉树的递归遍历,大家一看代码很简洁,但是一到自己写就废,下面我将讲解一些二叉树递归遍历的逻辑思维,为什么代码要这样写。根据“代码随想录”作者的归纳,我们可以把二叉树的递归问题进行分解为三个部分:1)我们要确定递归函数的参数和我们要返回的值是什么2)递归过程中的终止条件 当遇到什么情况的时候,该层的递归应该结束并返回上一层递归3)单层递归又是怎样的(2)根据上述的递归三步曲,我们对二叉树的前中后序遍历分析如下1)递归函数v

2022-02-19 22:50:23 415

原创 动态规划——零钱兑换问题

1、题目:力扣原题2、分析(1)结合我们之前分析的(动态规划解决背包问题),这里硬币有无限个对应完全背包问题。但又存在一点区别:纯完全背包是能否凑成总的金额,本题是要求凑成总金额的组合个数。(2)要注意是求解组合 还是排列 问题。例如 221 和121可以表示一种组合或者两种排列。组合之间不强调元素之间的顺序,而排列强调元素之间的顺序。DP五部曲分析如下:1)确定dp含义 dp[j]: 表示凑成总金额j可以得到的货币组合总数;2)确定递推公式‘’...

2022-02-16 11:21:35 3417 1

原创 动态规划——背包问题整理(01背包+完全背包)

1、引言背包问题简单描述,其实就是有一堆物品同时具有一定价值和重量,现有一个背包可以承受最大重量m,那么要怎么选择在不超过背包最大重量的前提下,使背包中选择的物品价值最大。最常见的背包问题又可以分为:01背包和完全背包,图示如下:(图片引自:代码随想录)2、标准01背包分析(1)问题描述(2)分析 最直接的想法应该是暴力解法,每一件物品只存在两种状态,拿或者不拿,那么便可以采用回溯的思想例举出所有可能,然后找到价值最大的组合,但我们会发现时间复杂度就到了...

2022-02-15 10:58:50 6778 2

原创 动态规划——统计不同二查搜索树

1、题目:力扣原题2、分析根据题意,先进行简单的分析:假如只有一个节点,那么只存在一棵搜索树;若存在两个节点,则存在两棵搜索树,如下图所示:当节点数为n=3个时,我们可以得到5棵树:当根节点为1时,存在两种,其右子树有两个节点,布局类似与n=2时的两棵树形状布局;当根节点为2时,存在1中,左右子树各一个节点,布局类似于n=1;当根节点为3时,存在两种,其左子树有两个节点,布局类似于n=2;所以,节点数n=3时的搜索树总数 = 1为根节点搜索树目+2为根节点搜索..

2022-02-14 17:26:13 304

原创 动态规划——路径问题(无障碍+有障碍)

路径问题1(无障碍)1、题目:力扣原题2、问题分析:根据题目分析,我们可以发现在网格中的任意位置(i,j)只能由其上一个状态(i,j-1)向右或者(i-1,j)向下移动得到。换句话说,当前状态存在的数目可以由上一个状态推导而来,所以可以动态规划来计算。采用动态规划五部曲的前四部,我们可以如下分析:1)确定dp数组及含义dp[i][j]表示从左上角起点到位置(i,j)可以走通的路径数目 ;2)确定递推公式因为机器人只可以向右或者向左移动,...

2022-02-14 16:34:35 2378

原创 动态规划——爬楼梯问题(爬楼梯+最省力爬楼梯)

1、问题:力扣原题2、分析根据题意展开分析,爬第一层楼梯有一种方法,爬到第二层楼梯有两种方法,那么爬到第三层楼梯可以通过从第一层楼梯一次性跨两步到第三层或者从第二层楼梯一次跨一步到第三层。所以到第三层楼梯的状态可以由第一层楼梯和第二层楼梯的状态进行推导,,故该题可采用dp来实现。dp五部曲:1) 确定dp数组及含义dp[i]表示爬到第i层楼梯总的方法数2)确定递推公式 dp[i]= dp[i-1] + dp[i-2]; dp[i-1]表...

2022-02-13 22:50:23 3442

原创 动态规划——斐波那契数

1、题目:力扣链接2、分析由题目描述可知,后面的状态总与前面的状态有关。所以可以采用DP来完成,根据动态规划五部曲,具体分析如下:1)确定dp数组的含义: dp[i] 表示第i个斐波那契数的数值;2) 确定dp递推公式dp[i]=dp[i-1]+dp[i-2]3)dp初始化根据dp递推公式,我们可以发现应该从下标2开始进行递推,所以需要对dp[0]、dp[1]进行初始化;dp[0]=0; dp[1]=1;...

2022-02-13 21:58:46 315

原创 动态规划一

——————讲述动态规划的基本理论————————————1、动态规划(DP):若在求解一个问题中,当前状态需要由上一个状态推导出来。或者说某一个问题中有很多重叠子问题,使用DP是非常有效的。2、动态规划做题“五部曲”:1)确定dp数组的下标及含义;2) 确定递推公式;3)dp数组如何初始化;4)确定遍历顺序;5)举例推导dp数组;动态规划问题的难点在于 如何确定dp数组,即dp数组表示的含义是什么,以及基于这样的dp数组定义,如何根据题目要求来构建递推公式。

2022-02-13 21:42:00 108

原创 leetcode接雨水问题

一、leetcode题目:11.盛最多水的容器(难度=中等)42.接雨水(难度=困难)407.接雨水II(难度=困难)二、解题分析:11.盛最多水的容器解决方案:双指针法设两指针 i , j ,指向的水槽板高度分别为 h[i] , h[j] ,此状态下水槽面积为 S(i,j)。由于可容纳水的高度由两板中的 短板 决定,因此可得如下 面积公式 :S(i,j)=min(h[i],h[j])×(j−i)在每个状态下,无论长板或短板向中间...

2022-01-10 17:24:28 6976 1

原创 部分leetcode链表题目的总结

1、链表的基础知识代码随想录2、leetcode涉及链表的题目:203.移出链表元素

2021-12-23 16:18:36 496

原创 leetcode环形链表问题(题目:141、142)

问题141:判断链表是否存在环?题目来源:力扣解题思路: 思路1:利用hashset遍历存储,若当前带存储的节点已经存在域hashset中,则说明存在环; 思路2:快慢指针,slow每次走一步,fast每次走两步,若存在环,则快慢指针最终在环中相遇;思路1(hashset实现)代码:public class Solution { public boolean hasCycle(ListNode head) { Set<...

2021-12-22 17:06:28 213

空空如也

空空如也

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

TA关注的人

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