随笔分类 - 编程练习
这里收藏的是一些我认为比较经典的算法题,最主要目的还是记录下解决每道题的算法思想。就当做是错题本了,
摘要:任给一个int型的整数,要求写一个函数,打印输入它的32位的二进制形式,例如输入1,则打印的结果应该是: 00000000 00000000 00000000 00000001 如何实现这个函数?请看下面的代码: public class Solution { public static void
阅读全文
摘要:题干 这题,一开始想复杂了,不需要专门写一个添加数据的方法。 题目给的方法以及参数是这样的: public ListNode mergeTwoLists(ListNode list1, ListNode list2) 我们可以先声明一个节点head,这个节点的值是-1.这样就免去了判断要把list1
阅读全文
摘要:题干 这题本质上考察的就是广度优先搜索。我们假设只有一个腐烂的橘子,这种情况比较好说明。那么我们从这个腐烂的橘子的上下左右四个方向开始BFS,每次遍历到一个新鲜的橘子,我们就把它腐烂。注意到BFS一般会借助队列来实现,那我刚开始肯定是把腐烂的橘子的位置加入队列,然后从队列中弹出并进行腐烂操作。等到队
阅读全文
摘要:题面 这题,自己写,一点思路都没有!后来看了题解,觉得作者分析得有道理!首先,这个所谓的摆动序列可以分为上升摆动序列,也可分为下降摆动序列。上升摆动序列是最后一个元素相对来说值偏大,使得整个序列呈上升趋势,那么下降摆动序列也就能理解了。上升摆动序列我们可以用up数组表示,up[i]就表示到数组中i这
阅读全文
摘要:题面 这道题,我一开始的思路就是老老实实自己再写一个函数挨个挨个遍历把和求出来,但无奈竟然不会写初始化那部分的代码,我惊呆了! 于是老实巴交地跑去看题解,然后,然后。。。震惊了我的世界观! 我敲,竟然还可以用前缀和!?太离谱。。。哦不,太神奇了吧! 所以嘞,且听我分析分析:这题反正不就是求某一个给定
阅读全文
摘要:题目链接:题面 这题,我的思路是,类似于八皇后那样,用回溯的方法解决,想了好久的递归函数(我实在是太菜了),如下: 1 private int dfs(int row, int col, int[][] a) { 2 int n = a.length; 3 if (row >= 0 && row <
阅读全文
摘要:题目链接:题目描述 这道题我们首先考虑动态规划来写。 定义dp[i][0]为第i天手上没有股票;dp[i][1]为第i天手上持有股票。 那么,考虑dp[i][0]的状态转移方程:这一天没有持有股票,那么有可能前一天也没有持有股票,所以就是dp[i-1][0];也有可能,前一天是持有了股票的,即dp[
阅读全文
摘要:题目描述: Given an array of integers nums, find the maximum length of a subarray where the product of all its elements is positive. A subarray of an array
阅读全文
摘要:题目描述: You are given an integer array nums. You want to maximize the number of points you get by performing the following operation any number of times
阅读全文
摘要:This is the second version of House Robber. 题目描述: You are a professional robber planning to rob houses along a street. Each house has a certain amount
阅读全文
摘要:题目描述:对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ax2 < … < axm)。那么就称P为S的一个上升序列。如果有多个P满足条件,那么我们想求字典序最小的那个。任务给出S序列,给出若
阅读全文
摘要:这里直接给个leetcode的链接吧,本人太懒了不想写题干。 题目 所谓的到楼梯顶就是要越过这个数组。比如数组长度为n,那么就要抵达n这个位置。一开始我觉得很难,不知道怎么做,因为它说可以从0开始,也可以从1开始,那我怎么知道从0开始还是从1开始?而且,你到某个地方后,还得根据那个值判断是跳两格还是
阅读全文
摘要:树状数组是一种比较高级的数据结构,大概是这样子的: 啥意思呢?别慌。先看最下面那一排,A数组表示原数组,就是我们最开始创建的数组,里面保存的是原始数据。而上面的C数组就是树状数组了。我们可以看到,C数组里面,有些有叶子节点,有些没有。比如说,在这棵树中,C[1]就是一个叶子节点,而C[2]不是,并且
阅读全文
摘要:TSP是啥呢?通俗地讲,这个问题可以描述为一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地。应如何选择行进路线,以使总的行程最短。所以就是在一个图中从一个点出发,找一个回路,能够回到这个点,而且总花销还最小。那我们怎么做呢?这篇文章我们用动态规划来写。 首
阅读全文
摘要:Bellman-Ford主要用来求解存在负权边的图的最短路径,这一点要优于迪杰斯特拉算法,不过BF算法的时间复杂度更高。 我们先来看看松弛(Relaxation)操作: 松弛操作基本思想就是估计的最短路径值渐渐地被更加准确的值替代,直至得到最优解。初始时,我们找到一个原点src,该店除了到自己的距离
阅读全文
摘要:核电站问题 一个核电站有n个放核物质的坑,坑排列在一条直线上。如果连续m个坑中放入核物质,则会发生爆炸。于是,在某些坑中可能不放核物质。 任务: 对于给定的n和m,求不发生爆炸的放置核物质的方案总数。 输入: 输入文件只一行,两个正整数n,m( 2<=N<50,2≤M≤5) 输出: 输出文件只有一个
阅读全文
摘要:描述 华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。 比赛规则和实际比赛规则相同, 在11分制下比分为10:11时还要继续比赛,直到分数差距达到2分;同理21分制下比分为20:21的时候也还要继续比赛。 比如现在有这么
阅读全文
摘要:描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练, 既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。 某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好
阅读全文
摘要:员工信息的定义如下: Class Employee{ public int happy; //快乐值 public List<Employee> subordinates; //该员工的直接下属 } 公司的每个员工都符合上述类的描述。整个公司的人员结构都可看成是一棵标准的、没有环的多叉树。树的头结点
阅读全文
摘要:例如这样一棵二叉树: 什么叫做二叉树结点间的最大距离呢?例如从结点a出发,可以向上走或向下走,但沿途的结点只能经过一次,到达结点b时路径上经过的结点个数叫做a到b的距离,因此,二叉树任意两个结点间都有距离,那么也就存在一个最大距离。 上图二叉树中B到C的距离就是3.最大距离容易得出是6,为G到F的距
阅读全文