![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
文章平均质量分 52
一热爱摄影的
一位喜欢摄影、喜欢音乐的在校生
展开
-
dp动规规划Day3
题目来源:dp专题:打家劫舍198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 +原创 2021-07-16 09:51:18 · 137 阅读 · 1 评论 -
dp动态规划练习
题目来源:LeetCode dp专题dp套路1.basecase特殊情况讨论2.状态转移方程3.缓存中间结果,建dp数组4.顺序性,执行的方向(1->n 或者 n->1)**优化:**如果方程只与前面的一两个数有关,可以做空间复杂度优化,舍掉dp数组,只更新每次的前一两个数即可,具体实施可以参考下面题目解法。Day1 509. 斐波那契数斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是原创 2021-07-13 11:21:02 · 59 阅读 · 0 评论 -
求两数的最小公倍数【java版ACM模式代码】
题目描述正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。示例输入 :5 7输出 : 35分析过程求解两数a, b 的最小公倍数先考虑特殊情况:由于都为正数,因此不用考虑0;当a =b 时候,直接返回其中一个数即可当a .> b 时候,遍历循环从I=1开始,当i*a % b==0时候,即这个数既可以整除a ,又可以整除b,也就是最小公倍原创 2021-04-14 10:36:06 · 454 阅读 · 2 评论 -
ACM模式自己写输入输出
文章目录1. Scanner类获取键盘输入2.Integer.parseInt和Integer.valueOf的区别3.ACM模式:连续子数组之和在平时的刷题过程中一般会遇到题目要求写的是ACM模式代码,即自己写输入输出,下面对自己写输入输出的模式进行了总结。1. Scanner类获取键盘输入Scanner 类是获取键盘输入的一个类,首先先创建 Scanner 对象Scanner sc = new Scanner(System.in);接下来通过Scanner 类的方法来获取输入,在调用方法原创 2021-04-05 11:21:36 · 3938 阅读 · 1 评论 -
dp动态规划解题套路 & 剑指offer 42连续子数组的最大和
文章目录动态规划解题套路四步法剑指offer 42连续子数组的最大和题目分析代码动态规划解题套路很多面试笔试题目涉及到的大部分都是DP的题目,这部分试题灵活性较高,而其中最重要的就是找出状态转移方程,方程找的好相当于成功了一半。这类题目需要不断地刷题来总结套路,总结就是多做题多总结多分析。四步法[0] 定义特殊情况。这部分的主要任务就是把特殊情况先列明解决掉,比如数组为null时候,直接return .....【这一步有时候题目没有特殊情况的时候是可以省略的】[1] 定义dp数组这一原创 2021-04-04 14:08:01 · 2877 阅读 · 5 评论 -
合并两个排序的链表
题目描述剑指 Offer 25–合并两个排序的链表输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路1.链表要先定义2个指针;2.dum指针是不能移动的; cur指针是要移动的,根据具体情况进行移动的;3.跳出循环的条件:l1或者l2为空时候;4.若(l1.val>l2.val),旧cur的下一个节点变为l2并将他原创 2021-03-08 15:24:45 · 116 阅读 · 1 评论 -
位运算的知识点及题目
位运算难点知识整理程序中的所有数在计算机内存中都是以二进制的形式储存的,位运算说穿了,就是直接对整数在内存中的二进制位进行操作。1表示负数,0表示正数这里列举三个比较容易混的位运算:左移,右移,无符号右移项目符号计算左移<<左边丢弃,右边补0右移>>右边丢弃,左边原为0补0,原为1补1无符号右移>>>不管正负,统一补0相关题目剑指15-二进制中1的个数请实现一个函数,输入一个整数(以二进制串形式),原创 2021-03-08 11:23:07 · 109 阅读 · 0 评论 -
平衡二叉树是什么?平衡二叉树的解题思路。
目录该题目出自:剑指 Offer 55 - II. 平衡二叉树题目描述:知识点解题思路代码块该题目出自:剑指 Offer 55 - II. 平衡二叉树题目描述:输入一棵二叉树的根节点,判断该树是不是平衡二叉树。示例 :给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。知识点1.什么是平衡二叉树? 如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。原创 2021-03-04 10:46:46 · 218 阅读 · 1 评论 -
剑指 Offer 50. 第一个只出现一次的字符【java版本】
目录题目描述解题思路代码块题目描述在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例:s = "abaccdeff"返回 "b"s = "" 返回 " "解题思路【利用数组解决】1.将所给的字符串转成字符数组;2.创建一个新的整型数组arr,大小为26;3.对字符数组进行遍历,在数组arr上实现累加操作;4.再次循环查看数组arr中哪个数字第一次为1,即为题所求元素;5.否则就返回空元素。代码块class Solution {原创 2021-03-02 19:49:55 · 88 阅读 · 0 评论 -
剑指 Offer 18. 删除链表的节点【java版本】
题目描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。示例 :输入: head = [4,5,1,9], val = 5输出: [4,1,9]解题思路这是一道关于删除链表结点的题目1.初始化定义一个头结点指向head,定义cur结点指向head.next;2.当要删除的结点为头结点时候,此时return head.next即可;3.否则就执行while循环,条件为cur结点非空 和 cur.val !=val :执行双指针分别向右移动一位原创 2021-03-02 16:57:26 · 84 阅读 · 0 评论 -
剑指 Offer 57. 和为s的两个数字【Java实现】
目录题目描述解题思路代码块反思?题目描述难易程度:容易输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]解题思路使用双指针解法进行解答。1.先定义左指针i=0,定义右指针j=nums.length-1。2.开始循环遍历数组元素,循环条件为左指针<右指针。由于这是一个递增数组,对左右指针所对应的元素进行相原创 2021-03-01 21:45:11 · 80 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字【Java实现】
#题目描述【难度:简单】找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 :输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3...原创 2021-03-01 17:15:21 · 86 阅读 · 0 评论