自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指 Offer 15. 二进制中1的个数

二进制中1的个数0、前言1、题目描述2、解题思路(1)可能引起死循环的解法(2)避免死循环的解法(3)给面试官带来惊喜的解法3、代码实现(1)可能引起死循环的解法代码(2)避免死循环的解法代码(3)给面试官带来惊喜的解法代码4、相关题目5、小节0、前言本题选自leetcode1、题目描述2、解题思路(1)可能引起死循环的解法直接用数字的最后一位&1判断最后一位是否为1,之后通过>>1位将倒数第二位数字变成倒数第一位数字,直到这串二进制数字为0即可。乍一看没.

2021-04-24 22:14:56 142

原创 剑指 Offer 14- II. 剪绳子 II

剪绳子 II0、前言1、题目描述2、解题思路3、代码实现4、小节0、前言本题选自leetcode1、题目描述2、解题思路贪心的特性我们需要先了解一下当我们应用贪婪算法解决问题的时候,每一步都可以做出一个贪婪的选择,基于这个选择,我们确定能够得到最优解!绳长大于等于5的时候,我们尽可能多地剪长度为3的绳子;当剩下长度为4的时候,把绳子剪成长度为2的绳子!证明:3、代码实现class Solution {public: int cuttingRope(.

2021-04-24 22:14:34 160

原创 剑指 Offer 14- I. 剪绳子

剪绳子0、前言1、题目描述2、解题思路(1) 动态规划解法(2) 贪心解法3、代码实现(1)动态规划(2)贪心4、小节0、前言本题选自leetcode1、题目描述2、解题思路(1) 动态规划解法在解决本题之前,我们有必要先了解一下动态规划的特性!1.求一个问题最优解!2.整体问题的最优解是依赖各个子问题的最优解!3.我们把大问题分解为若干个小问题,这些小问题之间还有互相重叠的更小问题!4.从上往下分析问题,从下往上求解问题!(2) 贪心解法请参考:剪绳子II3、代码.

2021-04-24 22:14:11 281

原创 剑指 Offer 13. 机器人的运动范围

机器人的运动范围0、前言1、题目描述2、解题思路3、代码实现4、小节0、前言本题选自leetcode1、题目描述2、解题思路深度优先搜索,利用递归的思路即可!从(0, 0)节点开始“构造”一棵树,因为叶节点是不能到达的点(边界点),所以只要返回树的内部节点数量即可。与剑指 Offer 12. 矩阵中的路径基本一致!具体解法可以查看我的代码!3、代码实现class Solution {public: vector<vector<bool>> v.

2021-04-15 10:39:49 186

原创 剑指 Offer 12. 矩阵中的路径

矩阵中的路径0、前言1、题目描述2、解题思路3、代码实现4、小节0、前言本题来自leetcode1、题目描述2、解题思路这是一道回溯法的典型题目,所以需要应用递归的思路来解决。我们可以形象的用树状结构来表示。在某一步有n个选项:如果当前选项符合要求,我们则进入当前选项中,假设这个选项有k个选项,我们则再根据条件进行判断,当走到叶节点也符合要求的时候,那些被我们选择的由根到叶的路径则是最终结果。如果当前选项不符合要求,我们则回溯到他的父节点,去选择它具有的别的选项,如果都不符合,则回溯到.

2021-04-15 08:38:41 111

原创 剑指 Offer 11. 旋转数组的最小数字

旋转数组的最小数字0、前言1、题目描述2、解题思路3、代码实现4、小节0、前言本题选自leetcode查找和排序是程序设计中经常需要用到的算法!其中二分查找一定要信手拈来,毕竟这是高频算法!本题就是对二分的熟练程度的考察!1、题目描述2、解题思路转自《剑指offer》83页我们注意到旋转之后的数组实际上可以划分为两个排序的子数组,而且前面子数组的元素都大于或者等于后面子数组的元素。我们还注意到最小的元素刚好是这两个子数组的分界线。在排序的数组中我们可以用二分查找法实现O(log.

2021-04-13 07:56:16 66

原创 剑指 Offer 10- II. 青蛙跳台阶问题

青蛙跳台阶问题0、前言1、题目描述2、解题思路3、实现代码4、本题扩展0、前言本题选自leetcode1、题目描述2、解题思路首先我们考虑最简单的情况。如果只有1级台阶,那显然只有一种方法。如果有2级台阶,那就有两种跳法: 一种是分两次跳,每次跳1级;另一种就是一次跳2级。接着我们再来讨论一般情况。我们把n级台阶时的跳法看成n的函数,记为 f(n)f(n)f(n) 。当n >>> 2的时,第一次跳的时候就有两种不用选择:一是第一次只跳1级,此时跳法数目等于后面剩.

2021-04-08 21:35:02 171

原创 剑指 Offer 10- I. 斐波那契数列

斐波那契数列0、前言1、题目描述2、解题思路(1)递归(2)循环3、代码示例(1)递归代码(2)循环代码0、前言本题选自leetcode1、题目描述2、解题思路(1)递归很多教科书都会用这道题去讲解递归的例子,但这并不合适。例如:当我们求解f(10)f(10)f(10)的时候,就要求f(9)f(9)f(9) 和 f(8)f(8)f(8),在求f(9)f(9)f(9)的时候还要求f(8)f(8)f(8) 和 f(7)f(7)f(7)… 可以发现,f(8)f(8)f(8)被重复计算了。这.

2021-04-08 20:39:31 305

原创 剑指 Offer 09. 用两个栈实现队列

用两个栈实现队列0、前言1、题目描述2、题目说明3、解题思路4、代码实现5、小节0、前言本题来自leetcode1、题目描述2、题目说明本题的示例有些奇怪,个人感觉需要说明一下。输入:["CQueue","appendTail","deleteHead","deleteHead"] 这一行表示每一行代码的操作[[],[3],[],[]]这个表示每一行代码操作所需要的参数举例:CQueue 表示新建一个CQueue对象,对应的所需参数为[],即此操作不需要参数。ap.

2021-04-08 14:58:11 139

原创 面试题8:二叉树的下一个节点

#mermaid-svg-L58pb72rigo7u9MO .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-L58pb72rigo7u9MO .label text{fill:#333}#mermaid-svg-L58pb72rigo7u9MO .node rect,#mermaid-svg-L58pb72rig

2021-04-08 14:04:55 179

原创 剑指 Offer 07. 重建二叉树

重建二叉树0、前言1、题目描述2、解题思路3、代码示例4、小节0、前言本题来自leetcode1、题目描述2、解题思路需要掌握的知识点:前序遍历,中序遍历,递归根据先序遍历我们能知道第一个值一定是这颗树的根节点,之后在中序遍历中找到这个值所在的位置,然后就可以知道这颗树的左子树和右子树是什么了。再依次对左子树和右子树重复上述操作(递归),就可以将这棵树完整的构建出来了。3、代码示例/** * Definition for a binary tree node. * s.

2021-04-06 20:50:06 169

原创 剑指 Offer 06. 从尾到头打印链表

从尾到头打印链表0、前言1、题目描述2、解题思路3、代码示例0、前言本题来自 leetcode1、题目描述2、解题思路如果仅仅是打印的话,可以遍历列表将元素全部压入栈中再去模拟弹栈过程,进而想到遍历链表递归实现打印。但是这道题是将链表的值反向存储在vector中返回。所以我们需要遍历链表,将其值全部压入栈中。再将栈值全部弹出存入vector数组即可。3、代码示例栈是vector的容器适配器,vector预先分配空间可节约时间。/** * Definition fo.

2021-04-06 16:26:42 159

原创 剑指 Offer 05. 替换空格

替换空格0、前言1、题目描述2、解题思路3、代码示例(1)C语言(2)C++3、Python0、前言在网络编程中,如果URL参数中含有特殊字符,如空格、’#‘等,则可以能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换的规则是在’%‘后面跟上ASCII码的两位十六进制的表示。比如空格的ASCII码是32,即十六进制的0x20,因此空格被替换成"%20"。再比如’#'的ASCII码为35,即十六进制的0x23,它在URL中被替换为"%23"。摘自 《剑指Off.

2021-04-06 13:24:07 296 3

原创 剑指 Offer 04、二维数组中的查找

二维数组中的查找0、前言1、题目描述2、题目示例3、题目分析4、解题规律5、代码示例6、注意事项0、前言本题来自leetcode。优先选择leetcode,之后为牛客网。1、题目描述2、题目示例3、题目分析将二维数组想象为一个矩阵。对于查询来说,单元格值有三种结果:等于,小于,大于。依旧束手无测,选择从具体的例子分析 假设给定矩阵为:128924912471013681115 假定要查找的数字为: .

2021-04-05 21:37:53 199

原创 剑指 Offer 03、数组中重复的数字

数组中重复的数字0、前言1、题目描述2、题目示例3、题目分析4、代码示例(1)哈希法(2)排序法0、前言本题来自leetcode。个人觉得本题难度在leetcode上属于简单是一种失误。它考察的是程序员的沟通能力,先问面试官要时间/空间需求!!!只是时间优先就用字典,还有空间要求,就用指针+原地排序数组,如果面试官要求空间O(1)并且不能修改原数组,还得写成二分法!!!摘自leetcode 自来火 老哥的评论1、题目描述2、题目示例3、题目分析根据面试官给出的时间和空.

2021-04-05 21:37:16 242

原创 《剑指offer》面试基本要求总结

目录0、前言1、面试流程(1)面试官谈面试(2)面试的三种形式(3)面试的3个环节2、面试需要的基础知识(1)面试官谈基础知识(2)编程语言0、前言《剑指offer》面试的流程和基本需求总结,最大精简化,可能有遗漏,大佬评论区多多补充。1、面试流程(1)面试官谈面试初级程序员考察算法和数据结构,高级程序员考察专业技能和项目经历。对面试公司有一定了解,也要准备好问面试官的问题。不要急于写代码,问清楚问题。不要急于上交代码,准备几轮测试自行检测bug。平时踏实写程序。(2)面试的三种.

2021-04-02 20:55:01 420 3

原创 统计字符个数

统计字符个数1、问题描述2、输入与输出3、解题思路4、代码实现1、问题描述2、输入与输出3、解题思路输入字符串,之后循环遍历即可。 isdigit()和isalnum()方法是用来判断数字和英文字母的。4、代码实现# 输入s = input()# 循环遍历d, a, b, o = 0, 0, 0, 0for j in s: if j.isdigit(): d += 1 elif j.isalnum(): a += 1 e.

2021-03-29 17:42:25 138

原创 两数之和

两数之和1、问题描述2、样例输入输出3、解题思路4、代码示例1、问题描述2、样例输入输出35 75 251002 33、解题思路first−>first->first−> 想到的就是利用双重循环进行暴力求解。过程大致是利用第一个元素与剩余元素进行匹配。然后再利用第二个元素与除了第一个元素外的剩余元素进行匹配,以此类推,直至全部匹配完毕。时间复杂度大概是 (1+n)×n2\frac{(1 + n) \times n}{2}2(1+n)×n​ ,约有 x22\f.

2021-03-29 16:36:07 95

原创 交叉排序

交叉排序1、题目描述2、样例输入与输出3、解题思路4、代码实现1、题目描述输入一行 kkk 个用空格分隔开的整数,依次为 n1​,n2​…nk​。请将所有下标不能被 333 但可以被 222 整除的数在这些数字原有的位置上进行升序排列,此外,将余下下标能被 333 整除的数在这些数字原有的位置上进行降序排列。输出包括一行,与输入相对应的若干个整数,为排序后的结果,整数之间用空格分隔。2、样例输入与输出1 5 4 3 10 7 191 3 7 5 10 4 193、解题思路将给.

2021-03-28 13:34:45 259

原创 numpy使用总结-----持续更新中

文章目录0、前言1、创建矩阵2、总结0、前言计算机普通小白一枚,文章不一定多好,希望看客多多关照。1、创建矩阵arrayimport numpy as npa = np.array([[0] * 4] * 3)优点: 充分利用多线程,连续存储等优势,对矩阵的创建以及操作具有极高的速度优势。(我是小白,不懂其中高深的算法,抱歉了,看官大人!)原理: 不理解,看到的大神可以来一波分析了!如果莫有人看到的话,等我有朝一日学会了,一定更新!arange# arange(初始值, 终值, 步.

2021-03-23 21:05:20 173

原创 Python全网总结 [‘编程技巧‘, ‘骚技巧‘, ‘奇淫技巧‘] 一览-------持续更新和修改中(只要头发还在)

文章目录0、前言1、字符串技巧(1)单行过长字符串(2)多行字符串(3)拼接字符串2、变量处理技巧(1)变量赋值与变量换值3、列表处理技巧(1)列表最后一个元素获取(2)反转列表及其拓展(3)二维列表获取方法(4)列表遍历(5)一行确定列表元素是否都一致4、字典(dict)和集合(set)处理技巧(1)字典和集合解析(2)有序字典(3)有序集合5、分支结构处理技巧(1)链状比较操作符(2)三目运算符(3)in 和 not in(4) 列表不为空则真6、函数处理技巧(1)返回多个值(2)列表作为函数参数7、.

2021-03-22 23:29:39 356

原创 PyCharm常用快捷键总结

PyCharm快捷键持续更新中!1、所有文本编译器通用的快捷键2、PyCharm特有的快捷键1、所有文本编译器通用的快捷键# 打开settings: ctrl + alt + s# 运行当前代码: ctrl + shift + F10# 运行当前脚本: shift + F10# 查找: ctrl + f# 替换: ctrl + r# 全局查找: ctrl + shift + f# 全局替换: ctrl + shift + r# 撤销: ctrl + z# 反撤销: ctrl + shi

2021-03-21 17:35:41 149

原创 默认浏览器起始界面强制是qq导航或者hao123等界面问题的解决方案!

1、界面示例2、问题原因3、解决办法4、实现效果到这里我们就成功的将界面改到自己喜欢的起始页了!

2021-03-20 23:09:12 689

原创 百文白鸡 or 百钱百鸡

百文百鸡到n文n鸡问题的线性O(n)优化1、百文百鸡问题描述你有100文钱,让你从鸡群中只挑选出100只鸡买下来!公鸡555文,母鸡333文,小鸡13\frac{1}{3}31​文。2、联想: n文n鸡问题描述你有n文钱,让你从鸡群中只挑选出n只鸡买下来!公鸡555文,母鸡333文,小鸡13\frac{1}{3}31​文。3、解决方法三重for循环暴力 or 双重for循环暴力4、更好的解决方法# n = N文N鸡# a = 公鸡, b = 母鸡, c = 小鸡# 5, 3,

2021-03-15 20:51:18 346

空空如也

空空如也

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

TA关注的人

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