随笔分类 -  剑指Offer

1 2 3 下一页

[LeetCode]归并排序、剑指 Offer 51. 数组中的逆序对(普通解法版-开临时数组)
摘要:###归并排序 ###代码 package Offer; public class mergeSort { public static void main(String[] args) { int[] nums = new int[] { 1, 3, 2, 3, 1, -1, 100 }; merg 阅读全文

posted @ 2020-10-27 12:40 coding_gaga 阅读(61) 评论(0) 推荐(0)

[LeetCode]剑指 Offer 52. 两个链表的第一个公共节点
摘要:###题解 nodeA走一个链表A(A独有+公共),再走B独有的长度, nodeB走一个链表B(B独有+公共),再走A独有的长度。 结果:两者相遇点即为交点;若没有交点,两者都走到null,会返回null。 ###代码 public class Solution { public ListNode 阅读全文

posted @ 2020-08-17 22:10 coding_gaga 阅读(84) 评论(0) 推荐(0)

[LeetCode]面试题62. 圆圈中最后剩下的数字(数学)
摘要:###题目 0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。 来源:力扣(Leet 阅读全文

posted @ 2020-05-29 23:38 coding_gaga 阅读(135) 评论(0) 推荐(0)

[LeetCode]面试题14- I. 剪绳子(DP/贪心)
摘要:题目 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n 1并且m 1),每段绳子的长度记为 k[0],k[1]...k[m] 。请问 k[0] k[1] ... k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的 阅读全文

posted @ 2020-02-26 21:31 coding_gaga 阅读(198) 评论(0) 推荐(0)

[LeetCode]面试题53 - I. 在排序数组中查找数字 I(二分);面试题53 - II. 0~n-1中缺失的数字(二分)
摘要:面试题53 I. 在排序数组中查找数字 I 题目 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2: 输入: nums = [5,7,7,8,8,10], target = 6 输出: 0 来源:力扣( 阅读全文

posted @ 2020-02-25 23:38 coding_gaga 阅读(223) 评论(0) 推荐(0)

[LeetCode]151. 翻转字符串里的单词
摘要:题目 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。 示例 1: 输入: "the sky is blue" 输出: "blue is sky th 阅读全文

posted @ 2020-02-24 15:20 coding_gaga 阅读(199) 评论(0) 推荐(0)

[LeetCode]105. 从前序与中序遍历序列构造二叉树(递归)、108. 将有序数组转换为二叉搜索树(递归、二分)
摘要:##题目 05. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 ###题解 使用HashMap记录当前子树根节点在中序遍历中的位置,方便每次查找。 递归 递归传参:该子树对应的前序遍历和中序遍历(用开始结束指针表示即可) 递归终止 阅读全文

posted @ 2020-02-01 22:07 coding_gaga 阅读(174) 评论(0) 推荐(0)

[LeetCode]142. 环形链表 II
摘要:题目 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 1,则在该链表中没有环。 说明:不允许修改给定的链表。 来源:力扣(LeetCode) 链接:h 阅读全文

posted @ 2019-11-03 00:05 coding_gaga 阅读(173) 评论(0) 推荐(0)

[LeetCode]121、122、309 买股票的最佳时机系列问题(DP)
摘要:121.买卖股票的最佳时机 题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在 阅读全文

posted @ 2019-10-23 22:33 coding_gaga 阅读(241) 评论(0) 推荐(0)

[剑指Offer]33-根据后序序列判断是否能组成BST
摘要:题目 如题。 题解 从序列第一个大于根节点的值往后都是右子树,判断右子树是否都大于根节点。 然后递归判断左右子树是否是BST 代码 class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public Tr 阅读全文

posted @ 2019-07-11 23:59 coding_gaga 阅读(181) 评论(0) 推荐(0)

[剑指Offer]17-打印从1到最大的n位数(递归)
摘要:题目 如题,输入n,则从1打印至99. 题解 考虑到n比较大会有大数问题,所以使用字符数组存储数。 由题可用递归求n位全排列,即为所得。 具体地,用临时字符数组用来存答案,每次递归填好一位,都填好后输出。 代码 import java.util.Scanner; public class Main 阅读全文

posted @ 2019-07-10 22:47 coding_gaga 阅读(266) 评论(0) 推荐(0)

[剑指Offer]56-数组中数字出现的次数(位运算)
摘要:题目一 数组中只出现一次的数字 题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字 题解 异或。 先考虑:数组中只有一个数字只出现了一次,其他数字都出现了两次,怎么找出这个数字?全部 异或 ,结果即为所求数字。 那么,原问题可以将原数组分成两个集合,两个 阅读全文

posted @ 2019-07-10 12:26 coding_gaga 阅读(220) 评论(0) 推荐(0)

[剑指Offer]18-题目一:删除链表的节点 题目二:删除链表中重复节点
摘要:题目一 题目 O(1)时间复杂度删除给定链表节点。 题解 用待删除节点后一个节点的值覆盖待删除节点值,更新链接关系。 注意链表只有一个节点;删除尾结点;删除头节点的处理。 代码 题目二(再练习) 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 阅读全文

posted @ 2019-07-09 17:24 coding_gaga 阅读(135) 评论(0) 推荐(0)

[剑指Offer]61-扑克牌中的顺子
摘要:题目 “红心A,黑桃3,小王,大王,方片5”,大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。 现在,要求你使用这幅牌模拟上面的过程,然后告诉我们LL的运气如 阅读全文

posted @ 2019-07-09 10:56 coding_gaga 阅读(161) 评论(0) 推荐(0)

[剑指Offer]30-包含min函数的栈
摘要:题目 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 题解 辅助栈记录当前最小值。 代码 import java.util.Stack; public class Main { private static Stack s=new Stack( 阅读全文

posted @ 2019-07-09 10:18 coding_gaga 阅读(93) 评论(0) 推荐(0)

[剑指Offer]栈的压入、弹出序列
摘要:题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是 阅读全文

posted @ 2019-07-08 23:51 coding_gaga 阅读(108) 评论(0) 推荐(0)

[剑指Offer]55-题目一:二叉树的深度 题目二:平衡二叉树
摘要:题目一 题目 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 题解 递归。 代码 题目二 题目 判断二叉树是不是平衡二叉树。注意,此处定义的平衡二叉树:递归地,左右两个子树相差 阅读全文

posted @ 2019-07-08 21:21 coding_gaga 阅读(373) 评论(0) 推荐(0)

[剑指Offer]26-树的子结构
摘要:题意 判断一棵树(参数二)是不是另一棵树(参数一)的子结构。 题解 递归第一棵树,找两棵树中值一样的节点。若找到后,用另一个函数判断以相同值得节点为根的树2是不是树1的子结构。 代码 class TreeNode{ double val; TreeNode lChild; TreeNode rChi 阅读全文

posted @ 2019-07-07 22:20 coding_gaga 阅读(113) 评论(0) 推荐(0)

[剑指Offer]49-丑数
摘要:题目 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 题解 把丑数按顺序依次算好放在数组中, ; 此外更新当前的三个指针multi2Idx、multi3Idx、mu 阅读全文

posted @ 2019-07-07 22:14 coding_gaga 阅读(153) 评论(0) 推荐(0)

[剑指Offer]66-构建乘积数组
摘要:题目 给定一个数组A[0,1,...,n 1],请构建一个数组B[0,1,...,n 1],其中B中的元素B[i]=A[0] A[1] ... A[i 1] A[i+1] ... A[n 1]。不能使用除法。 题解 把数组B想象成用矩阵构建,B[i]为矩阵中第i行所有元素乘积,构建befI和afte 阅读全文

posted @ 2019-07-06 13:56 coding_gaga 阅读(104) 评论(0) 推荐(0)

1 2 3 下一页

导航