随笔分类 -  leetcode

摘要:题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 问题分析 首先,这是一个最优化问题,这里的“优”指的是“最大和” 其次,此问题可分解成重叠子问题,设 f(i) 为 [0,i] 之间的连续子串的最大 阅读全文
posted @ 2022-05-02 10:27 大熊猫同学 阅读(47) 评论(0) 推荐(0) 编辑
摘要:一,求解幸运数 给定一个十进制的数,它的若干位之和等于二进制形式的各个位之和,则它就是幸运数。 比如十进制数123,各个位之和为6;比如十进制数3,各个位之和为3,二进制表示为 011,各个二进制位之和为2 ,这两个和不相等,故十进制数3不是幸运数。 下面程序实现了,给定一个数 num,求 1,2, 阅读全文
posted @ 2016-10-15 10:58 大熊猫同学 阅读(497) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 将 0,1,2....n-1 一共n个数字排成一个圆圈。从数字0开始每次从这个圆圈里面删除第m个数字( 1=<m<=n, 比如第1个数字为0)。求出这个圆圈里面最后剩下的那个数字。 二,问题分析 使用java.util.LinkedList类保存这N个数字,并调用 remove(int 阅读全文
posted @ 2016-10-03 15:38 大熊猫同学 阅读(1239) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 请自己构造一个简单的有序单链表,然后实现删除链表中的重复结点。比如: 二,问题分析 首先要实现一个单链表,因此需要定义一个节点类Node。其次,实现向链表中添加结点的方法(使用尾插法)addNode 删除重复结点的实现思路: 定义两个指针:pre 和 next。初始时,pre指向链表中 阅读全文
posted @ 2016-09-30 08:58 大熊猫同学 阅读(3296) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 在控制台上输入一组数据,请按照输入的数据的格式来构造一棵二叉树,并打印出二叉树的高度。 输入的数据格式如下: 第一行为一个整数N(其实是二叉树中边的数目),表示接下来一共有N行输入,每行输入有两个数,左边的数表示父结点,右边的数表示父结点的孩子结点。示例如下: 6 0 1 0 2 1 阅读全文
posted @ 2016-09-26 17:35 大熊猫同学 阅读(3861) 评论(1) 推荐(0) 编辑
摘要:1,问题描述 给定一个整数N,该整数的二进制权值定义如下:将该整数N转化成二进制表示法,其中 1 的个数即为它的二进制权值。 比如:十进制数1717 的二进制表示为:0000 0110 1011 0101 故它的二进制权值为7(二进制表示中有7个1) 现在要求一个比N大,且最靠近N的数,且这个数的二 阅读全文
posted @ 2016-09-24 16:18 大熊猫同学 阅读(1406) 评论(0) 推荐(1) 编辑
摘要:一,问题描述 给定两个整型数组,找出这两个数组中的最大的公共元素。注意条件:①公共元素 ②最大的公共元素 比如:arr1={8,2,9,6,18,7,25,28} arr2={6,39,4,9,25,18,36,12}.假设 arr1 的长度为M,arr2的长度为N 这两个数组的最大公共元素是:25 阅读全文
posted @ 2016-09-15 20:16 大熊猫同学 阅读(1965) 评论(2) 推荐(0) 编辑
摘要:一,给定一个矩阵,用二维数组表示,不一定是方阵(N*N),求矩阵的转置(向右),和向左转置。比如: 1 2 3 4 5 6 7 8 9 向右转置: 1 4 7 2 5 8 3 6 9 再比如: 1 2 3 4 5 6 向 左转置 3 6 2 5 1 4 二,实现思路 假设原来的矩阵是M*N,转置后变 阅读全文
posted @ 2016-09-15 10:58 大熊猫同学 阅读(445) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 请构造一棵二叉树,并按照“之字形”顺序打印这棵二叉树。 所谓“之字形”打印,第一行是从左到右打印,第二行是从右到左打印,第三行又是从左到右打印.... 即,奇数行(根为第一行)是从左到右打印,而偶数行是从右到左打印。 如上图:该二叉树的打印顺序为: 20 30 10 12 25 二,问 阅读全文
posted @ 2016-09-14 14:51 大熊猫同学 阅读(3557) 评论(0) 推荐(1) 编辑
摘要:一,问题描述 给定一棵二叉查找树,以及某个结点的值。查找该结点的下一个结点。如果该结点是最大的,则返回 null 对于二叉查找树而言,它是中序遍历有序的。某结点的下一个结点 就是:中序遍历输出的下一个结点。 二,问题分析 假设需要查找 node 结点的下一个结点,需要考虑三种情况: ①node 节点 阅读全文
posted @ 2016-09-02 19:46 大熊猫同学 阅读(2410) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 给定一棵二叉搜索树,在二叉搜索树的基础上,将之转换成有序的双向链表。即,不需要额外的辅助空间。 二,问题分析 对于二叉搜索树而言,它的结点有左孩子和右孩子指针。这类似于双向链表中的 前向指针(指向前驱结点) 和 后向指针(指向下一个结点)。另外,二叉搜索树中序遍历是有序的。在中序遍历二 阅读全文
posted @ 2016-08-25 10:19 大熊猫同学 阅读(2086) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 实现一个栈(元素遵守先入后出顺序),能够通过 min 方法在 O(1)时间内获取栈中的最小元素。同时,栈的基本操作:入栈(Push)、出栈(Pop),也是在O(1)时间内完成的。 二,问题分析 之所以认为这个问题有趣,是因为在实现 min 方法的过程 牵涉到了 “缓存一致性”问题。是不 阅读全文
posted @ 2016-08-18 21:17 大熊猫同学 阅读(4796) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 给定一个以字符串形式表示的入栈序列,请求出一共有多少种可能的出栈顺序?如何输出所有可能的出栈序列? 比如入栈序列为:1 2 3 ,则出栈序列一共有五种,分别如下:1 2 3、1 3 2、2 1 3、2 3 1、3 2 1 二,问题分析 先介绍几个规律: ①对于出栈序列中的每一个数字,在 阅读全文
posted @ 2016-08-18 11:47 大熊猫同学 阅读(11507) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 请构造一棵二叉查找树,并给定两个结点,请找出这两个结点的最低公共祖先结点。 这里假设二叉查找树中的结点的权值存储是整型数字(见代码中的BinaryNode内部类),最低公共祖先结点如下:结点5 和 结点12 的最低公共祖先结点是结点10 二,实现思路 假设给定的两个结点的权值分别为 n 阅读全文
posted @ 2016-08-14 17:35 大熊猫同学 阅读(2682) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 给定一个单链表,单链表中有环,请找出这个环的入口结点。比如,如下单链表: 入口结点是,结点4. 二,实现思路 如果仅仅是寻找入口结点,可以更改结点元素的值的话,只需要扫描一遍就可以找到入口结点了。 比如,假设所有的结点值都是正数,从头开始,那么在扫描过程中,将扫描的结点的值与 0 比较 阅读全文
posted @ 2016-08-13 20:27 大熊猫同学 阅读(1263) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 给定一个字符串,求出该字符串的全排列。 比如:"abc"的全排列是:abc、acb、bac、bca、cab、cba 二,实现思路 采用递归的方式求解。每次先选定一个字符,然后进行“若干次”交换,求出在选定这个字符的条件下,所有的全排列,并把字符“复位”再交换回来。至此,一趟全排列完成。 阅读全文
posted @ 2016-08-10 19:07 大熊猫同学 阅读(18240) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 给定一个整型数组(数组中的元素可重复),以及一个指定的值。打印出数组中两数之和为指定值的 所有整数对。参考:https://leetcode.cn/problems/kLl5u1/submissions/ 二,算法分析 一共有两种方法来求解。方法一借助排序,方法二采用HashSet 方 阅读全文
posted @ 2016-08-07 17:08 大熊猫同学 阅读(5577) 评论(1) 推荐(0) 编辑
摘要:一,问题描述 给定两个整型数组,假设一个长度为M,另一个长度为N。请找出(打印出)这两个数组中的公共元素。 二,算法分析 有两种思路求解这个问题。 ①使用一个HashSet保存第一个数组中的所有元素,然后遍历第二个数组中的每个元素,判断该元素是否在HashSet中。如果在,就表明这个元素是公共元素。 阅读全文
posted @ 2016-08-05 22:16 大熊猫同学 阅读(3735) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 所谓“数字黑洞”现象,就是任意给定一个4位正整数,将组成该正整数的4个数字先按非递减顺序排序,得到一个数称为Large;再将这4个数字按非递增顺序排序,得到另一个数,称为Small。然后,将Large减去Small,得到一个新的数字。当然,其它位数的也存在着这个现象,具体可参考:数字黑 阅读全文
posted @ 2016-08-01 20:41 大熊猫同学 阅读(1287) 评论(0) 推荐(0) 编辑
摘要:一,问题描述 假设有个机器人坐在 X×Y 网格的最左上角,每次只能向下或者向左移动。最左上角的坐标标记为(0,0),最右下角的坐标为(X,Y) 请问:机器人从(0,0)走到(X,Y)共有多少种走法?其实这个问题与 这篇文章 中提到的问题非常相似。 二,问题分析 这个问题一共有三种方式来求解。第一种是 阅读全文
posted @ 2016-07-23 21:51 大熊猫同学 阅读(1471) 评论(0) 推荐(0) 编辑