算法练习
qq_36120793
弱鸡 菜鸟 。
展开
-
两个正数 比较两个数的二进制有几位不同 将其值返回
方法1: 将两个数分别先和1进行与运算,比较结果,然后两个数分别右移一位。int countBitDiff(int m, int n) { int len = 32; int count = 0; while(len > 0){ int a = m & 1; int b = n & 1;原创 2017-09-04 20:37:49 · 438 阅读 · 0 评论 -
递归-网格走法
题目描述 有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。 输入描述: 输入包括一行,逗号隔开的两个正整数x和y,取值范围[1,10]。 输出描述: 输出包括一行,为走法的数目。 #include<iostream> #include<...原创 2018-02-21 16:06:20 · 428 阅读 · 0 评论 -
小易喜欢的单词(简单比较)
题目描述 小易喜欢的单词具有以下特性: 1.单词每个字母都是大写字母 2.单词没有连续相等的字母 3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。 例如: 小易不喜欢”ABBA”,因为这里有两个连续的’B’ 小易不喜欢”THETXH”,因为这里包含子序列”THTH” 小易不喜欢”ABACADA”,因为这里包含子序列”AAAA” ...原创 2018-02-19 23:04:32 · 693 阅读 · 1 评论 -
寻找舞伴(动态规划)
题目描述 舞蹈队要参加央视春节晚会了,这可是天大的好消息。节目要求男女生组成一对一的舞伴,并且舞伴的身高要相同。例如男生的身高为2、3、4,女生为1、2、3,其中身高为“2”和“3”的同学能找到合适的舞伴,即最多有两对舞伴。 你能帮他们计算出最多有多少对舞伴吗? #include<iostream> using namespace std; int temp1[999],te...原创 2018-02-11 23:31:24 · 399 阅读 · 0 评论 -
添加回文串(动态规划)
题目描述 对于一个字符串,我们想通过添加字符的方式使得新的字符串整体变成回文串,但是只能在原串的结尾添加字符,请返回在结尾添加的最短字符串。 给定原字符串A及它的长度n,请返回添加的字符串。保证原串不是回文串。思路:写一个判断是否为回文串的方法,再写一个编写回文串的方法….class Palindrome { bool judce(string str){ int low原创 2017-10-03 01:02:23 · 464 阅读 · 0 评论 -
汉诺塔问题(递归)
题目描述 对于传统的汉诺塔游戏我们做一个拓展,我们有从大到小放置的n个圆盘,开始时所有圆盘都放在左边的柱子上,按照汉诺塔游戏的要求我们要把所有的圆盘都移到右边的柱子上,请实现一个函数打印最优移动轨迹。 给定一个int n,表示有n个圆盘。请返回一个string数组,其中的元素依次为每次移动的描述。描述格式为: move from [left/mid/right] to [left/mid/rig原创 2017-10-10 00:36:56 · 868 阅读 · 0 评论 -
最短排序数组(动态规划)
题目描述 对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。 给定一个整数数组A及它的大小n,请返回最短子数组的长度。 测试样例: [1,5,3,4,2,6,7],7 返回:4 class ShortSubsequence { public: int findShortest(vector<int> A, int n) { vector<int原创 2017-10-07 22:01:27 · 731 阅读 · 1 评论 -
二叉树寻找最近公共祖先
题目描述 有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1。现在有两个结点a,b。请设计一个算法,求出a和b点的最近公共祖先的编号。 给定两个int a,b。为给定结点的编号。请返回a和b的最近公共祖先的编号。注意这里结点本身也可认为是其祖先。 class LCA { public: int getLCA(int a, int b) {原创 2017-09-11 21:55:45 · 592 阅读 · 0 评论 -
二叉树的序列化(简单递归)
题目描述 二叉树被记录成文件的过程叫做二叉树的序列化。序列化的方法有很多,这里我们采用括号序列的方法将其序列化,所谓括号序列指的是对于一个节点生成一个括号,括号内是其子树的括号序列,其中左儿子(若存在)的括号在前,右儿子(若存在)的括号在后。对于给定的树,请设计高效的算法,将其序列化。 给定一个树的根节点指针root,请返回一个字符串,代表其序列化后的括号序列。思路 : 简单递归 。这个主要是第转载 2017-09-26 23:54:00 · 368 阅读 · 0 评论 -
斐波那契数列变形之跳台阶问题
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:斐波那契数列。public class Solution { public int JumpFloor(int target) { if(target == 2 ) return 2; if(target原创 2017-09-18 20:40:01 · 445 阅读 · 0 评论 -
K好数(动态规划)
问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。 输入格式 输入包含两个正整数,K和L。 输出格式 输出一个整数,表示答案对1000000007取模后原创 2017-09-25 23:29:24 · 309 阅读 · 0 评论 -
数组单调和(动态规划问题)
题目描述 现定义数组单调和为所有元素i的f(i)值之和。这里的f(i)函数定义为元素i左边(不包括其自身)小于等于它的数字之和。请设计一个高效算法,计算数组的单调和。 给定一个数组A同时给定数组的大小n,请返回数组的单调和。保证数组大小小于等于500,同时保证单调和不会超过int范围。 测试样例: [1,3,5,2,4,6],6 返回:27思路:很简单,动态规划,把局部最优解记录下来,最后原创 2017-09-25 21:23:23 · 713 阅读 · 0 评论 -
动态规划问题之牛市重现!
问题描述: 风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围原创 2017-09-04 21:17:20 · 293 阅读 · 0 评论 -
上至下 左至右递增数组寻找一数字
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:首先我们选择从左下角开始搜寻,(为什么不从左上角开始搜寻,左上角向右和向下都是递增,那么对于一个点,对于向右和向下会产生一个岔路;如果我们选择从左下脚开始搜寻的话,如果大于就向右,如果小于就向下)。public class S原创 2017-09-16 21:44:40 · 269 阅读 · 0 评论 -
折纸问题(中序递归)
题目描述请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展 开。此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕 ;突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,对折N次。请从上到下计算出所有折痕的⽅向。给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为”down”,若为上折痕则为”up”.思路:观察可发现,这是一颗二叉树,原创 2017-09-25 11:09:17 · 270 阅读 · 0 评论 -
动态规划——合唱团
题目: 有 n 个学生站成一排,每个学生有一个能力值,从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,返回最大的乘积。 每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每个学生的能力值 ai(-50 ...原创 2018-02-23 19:06:09 · 982 阅读 · 0 评论