剑指Offer
文章平均质量分 84
剑指Offer刷题记录
潜下心,沉住气
慢一点,那样更快一点
疯狂java杰尼龟
路漫漫其修远兮,吾将上下而求索
展开
-
代码随想录学习笔记——二叉树(上)
代码随想录学习笔记——二叉树原创 2022-01-17 08:12:43 · 819 阅读 · 0 评论 -
代码随想录学习笔记——二叉树(下)
前言参考代码随想录/LeetCode作的学习笔记。特别赞同卡子哥的一句话,初学者刚开始学习算法的时候,看到简单题目没有思路很正常,千万别怀疑自己智商,学习过程都是这样的,大家智商都差不多。慢慢来,一切都会好起来~二叉树题目链接 106. 从中序与后序遍历序列构造二叉树 难度级别 Mid 递归思路: 做这种题目要搞清楚以根结点为基准对左右子树需要实现哪些操作。首先后序遍历的最后一个结点是根结点,它先将中序序列划分为左右两个部分,再将后序序列划分为左右两个部分,然后再根据左右部分递归即可,结束条原创 2022-01-16 22:08:32 · 577 阅读 · 0 评论 -
代码随想录学习笔记——哈希表
前言参考代码随想录/LeetCode作的学习笔记。特别赞同卡子哥的一句话,初学者刚开始学习算法的时候,看到简单题目没有思路很正常,千万别怀疑自己智商,学习过程都是这样的,大家智商都差不多。慢慢来,一切都会好起来~哈希函数: 如将姓名通过HashCode 编码成数字。哈希表: 通过哈希法可以实现一对一映射和O(1)的查找复杂度。如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景应该第一时间想到哈希法!LeetCode 242. 有效的字母异位词 难度级别 easy题目: 给定两个字原创 2022-01-18 08:48:53 · 1035 阅读 · 1 评论 -
【剑指 Offer_65】不用加减乘除做加法_Java_递归及非递归超详细图解
剑指 Offer 65. 不用加减乘除做加法题目描述方法一、非进位与进位和+递归Java解法题目描述写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:输入: a = 1, b = 1输出: 2提示:a, b 均可能是负数或 0结果不会溢出 32 位整数方法一、非进位与进位和+递归参考自面试题65. 不用加减乘除做加法(位运算,清晰图解)以及评论区大佬n=a⊕b ——非进位和:异或运算c=a&b<<1 ——原创 2020-11-12 15:27:41 · 994 阅读 · 5 评论 -
【剑指 Offer_64】求1+2+…+n_Python&Java&C++_短路递归解法
剑指 Offer 64. 求1+2+…+n题目描述方法一、“短路”+递归Java解法C++解法复杂度分析方法二、Python解法题目描述求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45限制:1 <= n <= 10000参考官方解答方法一、“短路”+递归思路:用&&方法实现从n开始倒序原创 2020-11-11 14:39:23 · 294 阅读 · 0 评论 -
【剑指 Offer_58 - II】左旋转字符串_Python&Java_列表字符串切片拼接解法
部分参考面试题58 - II. 左旋转字符串(切片 / 列表 / 字符串,清晰图解),如有侵权,请联系删除。题目描述字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrl原创 2020-11-06 11:03:49 · 464 阅读 · 3 评论 -
《剑指Offer》面试题54. 二叉搜索树的第 k 大节点
面试题54. 二叉搜索树的第 k 大节点题目描述解题Java解法题目描述给定一棵二叉搜索树,请找出其中第k大的节点。示例1:示例2:限制:1 ≤ k ≤ 二叉搜索树元素个数解题== 本文解法基于此性质:二叉搜索树的中序遍历为 递增序列 。==中序遍历 为 “左、根、右” 顺序,递归法代码如下:// 打印中序遍历void dfs(TreeNode root) { if(root == null) return; dfs(root.left); // 左原创 2021-02-04 14:42:16 · 242 阅读 · 0 评论 -
【剑指 Offer_38】字符串的排列_Java_深度优先搜索解法
剑指 Offer_38——字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]限制:1 <= s 的长度 <= 8参考:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/solution/mian-shi-ti-38-zi-fu-ch转载 2020-12-04 15:45:14 · 200 阅读 · 0 评论 -
【剑指 Offer_15】二进制中1的个数_Python&Java_逐位相与解法
剑指 Offer 15. 二进制中1的个数“前戏”正题——剑指 Offer 15. 二进制中1的个数竟然有这种解法!!!Java解法Python解法C++解法“前戏”刷题有时候也没辣么枯燥,比如这样这个坤坤和杰哥我是经常见了。常常使我破涕而笑~没有别的意思,晒出来就是好玩~杰哥很努力啊 ~ 杰哥你也好勇 ~今天刷题刷到——剑指 Offer 15. 二进制中1的个数涨新姿势了有木有~我只能评论1无所有:)主要是最最最基础的题刷完一道少一道,路越来越难走,做题的激情有所下降,而在这个网站上原创 2020-11-10 16:01:20 · 980 阅读 · 0 评论 -
【剑指 Offer_10- I】斐波那契数列_Python&Java_动态规划解法
方法一、java解法class Solution {public int fib(int n) { if(n==0) return 0; if(n==1) return 1; int num1=0,num2=1,sum=0; while(n>=2){ sum=(num1+num2)%1000000007 ;//题目要求 num1=num2; num2=sum; n--原创 2020-11-11 11:33:16 · 415 阅读 · 0 评论 -
【剑指 Offer_05】替换空格_Python&Java&C++_遍历添加&原地修改&split&replace解法
题目描述目录题目描述方法一、Python字典添加字符Python解法复杂度分析方法一、Python字典添加字符思路:创建一个字典。然后对字符进行判断,若不空则将字符加入list中,否则将“%20”加入list中。最后将列表连接返回。Python解法class Solution(object): def replaceSpace(self, s): if (len(s) == 0): return "" list = []原创 2020-10-30 15:41:48 · 1193 阅读 · 0 评论 -
【剑指 Offer_04】二维数组中的查找_Python&Java_线性查找解法
题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给原创 2020-10-29 16:56:49 · 513 阅读 · 2 评论 -
【剑指 Offer_03】数组中重复的数字_Python&Java_Dic&Sort&Map&Hash&原地置换解法
剑指 Offer 03. 数组中重复的数字class Solution(object): def findRepeatNumber(self, nums): print(nums) temp = {} for n in nums: if n not in temp: temp[n] = 1 else: temp[n] += 1原创 2020-10-29 15:18:30 · 626 阅读 · 0 评论