
算法练习
Jane_96
谁说妹子不可以写代码的
展开
-
剑指 Offer 16. 数值的整数次方,右移和无符号右移的区别!!!
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。提示:-100.0 < x < 100.0-2^31 <= n <= 2^(31-1)-10^4 <= x^n <= 10^4必须表扬一下 x=2, n=-2147483648 这一组测试用例。这个用例决定了这里只能用无符号右移,有符号右移会有问题!2147483648 = 2^31 ===> 对应的二进制串为 ‘1000000000.原创 2021-03-20 16:06:06 · 341 阅读 · 0 评论 -
最小的K个数(归并排序)
题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,C++#include<iostream>#include<vector> using namespace std;class Solution {public: void merge(int input[] , int s...原创 2019-03-24 18:03:37 · 1016 阅读 · 0 评论 -
连续子数组的最大和(C++)
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序...原创 2019-03-22 22:59:20 · 757 阅读 · 0 评论 -
数组中出现次数超过一半的数字(JS)
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。function MoreThanHalfNum_Solution(numbers){ let len = numbers.length; let i = ...原创 2019-03-21 20:19:41 · 917 阅读 · 1 评论 -
包含min函数的栈(JS版本)
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。JS版本let temp = [];let temp2 = [];function top(){ if(temp.length > 0) return temp[temp.length - 1]; return null;}function p...原创 2019-03-20 18:01:20 · 515 阅读 · 0 评论 -
栈的压入、弹出顺序(C++版本)
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)class Solution {public: bool IsPopOr...原创 2019-03-19 22:31:30 · 392 阅读 · 0 评论 -
从尾到头打印链表(JS和C++版本)
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。C++/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*...原创 2019-03-18 10:20:31 · 210 阅读 · 0 评论 -
替换空格(JS和C++版本)
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。C++:class Solution {public: void replaceSpace(char *str,int length) { string strNew= ""; for(in...原创 2019-03-17 12:07:13 · 165 阅读 · 0 评论 -
二维数组中的查找(JS和C++版本)
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。JS(V8 6.0.0) 和 C++function Find(target, array){ let len = array[0].length; for(let i = 0...原创 2019-03-16 23:36:41 · 217 阅读 · 0 评论 -
腾讯笔试题编程题——纸牌游戏
题目描述 牛牛和羊羊正在玩一个纸牌游戏,这个游戏一共有n张纸牌,第i张纸牌上写着数字ai。 牛牛和羊羊轮流抽牌,牛牛先抽,每次抽牌,他们也可以从纸牌堆中任意选择一张抽出,直到纸牌被抽完。 他们的得分等于他们抽到的纸牌数字总和。 现在假设牛牛和羊羊都采用最优策略,请你计算出游戏结束后牛牛得分减去羊羊得分等于多少。输入描述 输入包括两行。 第一行包括一...原创 2018-04-10 11:10:55 · 5168 阅读 · 4 评论 -
编程题——图的闭包
题目大意 如果一个无向图,每个点与其他的点都存在一条边,就成为图的闭包样例输入 4 3 1 2 1 4 2 3样例输出 3题解水题。就是每个点应该有n-1条边。统计一下差的边的总和,再除以2,因为是无向图。AC代码#include<iostream>#include<vector>...原创 2018-03-29 21:00:39 · 1547 阅读 · 0 评论 -
编程题——题目排序
题目大意 给一堆题目。包含题目的tag,提交数,通过数,然后通过率在0~30%的题目难度为5,在30%~60%之间的难度为4,在60%~100%之间的难度为3;然后让你按字典序输入题目的tag以及它的难度样例输入 4 math 100 90 algorithm 10 8 string 50 1 dp 100 50样例输出 algori...原创 2018-03-29 20:50:13 · 1295 阅读 · 0 评论 -
编程题——数对
题目大意 牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。 但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。 牛牛希望你能帮他计算一共有多少个可能的数对。输入描述 输入包括两个正整数n,k(1 <= n <= 10^5, 0 <= k <= n - 1)。输出描述 ...原创 2018-03-29 20:41:42 · 1986 阅读 · 4 评论 -
编程题——被3整除
题目描述 小Q得到一个神奇的数列: 1, 12, 123,…12345678910,1234567891011…。 并且小Q对于能否被3整除这个性质很感兴趣。 小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。输入描述 输入包括两个整数l和r(1 <= l <= r <= 1e9), 表示要求解的区间两端。...原创 2018-03-29 19:51:29 · 2067 阅读 · 0 评论 -
编程题——迷路的牛牛
题目大意: 牛牛去犇犇老师家补课,出门的时候面向北方,但是现在他迷路了。虽然他手里有一张地图,但是他需要知道自己面向哪个方向,请你帮帮他。 输入描述: 每个输入包含一个测试用例。 每个测试用例的第一行包含一个正整数,表示转方向的次数N(N<=1000)。 接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转。输出描述: ...原创 2018-03-29 19:44:40 · 805 阅读 · 0 评论 -
顺时针打印矩阵——JS
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.function printMatrix(matrix){ // write code here let ...原创 2019-08-17 15:04:08 · 474 阅读 · 0 评论 -
字符串的排列——JS
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。JSlet result = [];function Permutation(str){ // write code here result = []; let arr = str.spl...原创 2019-09-18 08:45:40 · 447 阅读 · 0 评论 -
数组中的逆序对(归并排序)
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007C++#include<iostream>#include<vector> using namespace std;class Solution {...原创 2019-03-24 21:28:57 · 566 阅读 · 0 评论 -
和为S的连续正数序列(JS)
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。...原创 2019-04-10 11:53:46 · 558 阅读 · 0 评论 -
左旋转字符串(JS)
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!JS版本function LeftRotateString(str, n){ if(s...原创 2019-05-23 20:11:06 · 470 阅读 · 0 评论 -
2018蓝桥杯省赛C/C++ B组——乘积尾零
题目大意 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 1173 6866 3397 4759 7557 3070 2287 1453 ...原创 2018-04-15 11:36:02 · 513 阅读 · 0 评论 -
2018蓝桥杯省赛C/C++ B组——全球变暖
题目大意 你有一张某海域NxN像素的照片,”.”表示海洋、”#”表示陆地,如下所示: ……. .##…. .##…. ….##. ..####. …###. ……. 其中”上下左右”四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。 由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体...原创 2018-04-16 22:00:08 · 1839 阅读 · 3 评论 -
2018蓝桥杯省赛C/C++ B组——第几天
题目大意2000年的1月1日,是那一年的第1天。 那么,2000年的5月4日,是那一年的第几天?注意:需要提交的是一个整数,不要填写任何多余内容。题解这个题目送分的,不用写代码,Excel表格拉一拉就出来了。。答案125ps:如果不会用Excel计算此题的宝宝们可以去学一学哦,Excel在某些题目里真的很好用。。...原创 2018-04-14 09:33:56 · 1194 阅读 · 0 评论 -
2018蓝桥杯省赛C/C++ B组——明码
题目大意 汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。 16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。 一个字节可以存储8位信息,用32个字节就可以存一个汉字的字形了。 把每个字节转为2进制表示,1表示墨迹,0表示底色。每行2个字节, 一共16行,布局是: 第1字节,第2字节 第3字节...原创 2018-04-14 10:03:15 · 566 阅读 · 1 评论 -
算星期几神器——基姆拉尔森计算公式
介绍一个算星期几的神器,至少在我知道这个公式之后,关于星期几这个问题,我在也没有算错过~=o(^▽^)o~♪公式是这样的:w = (y + y /4 + y / 400 - y / 100 + 2 * m + 3 * (m + 1)/5 + d) % 7;注:这个公式中,w = 0对应的是星期一,w = 7对应的是星期日附上完美版本代码#include<iostream>...原创 2018-05-24 18:14:08 · 5253 阅读 · 3 评论 -
LeetCode 环形链表之null pointer错误
题目大意: 给定一个链表,判断链表中是否有环。报错代码:class Solution {public: bool hasCycle(ListNode *head) { if(head == NULL){ return false; } ListNode* tmp1 = head; ListN...原创 2018-05-19 12:06:18 · 373 阅读 · 0 评论 -
CodeVS 1039 数的划分 动态规划
题目描述 将整数n分成k份,且每份不能为空,任意两种划分方案不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种划分方案被认为是相同的。 1 1 5 1 5 1 5 1 1 问有多少种不同的分法。输入描述 输入:n,k (6 &lt; n &lt;= 200,2 &lt;= k &lt;= 6)输出描述 输出:一个整数,即不...原创 2018-03-31 16:06:11 · 376 阅读 · 0 评论 -
CodeVS 1010 过河卒 深度优先搜素
题目描述 如图,A 点有一个过河卒,需要走到目标 B 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 C 点上的马可以控制 9 个点(图中的P1,P2 … P8 和 C)。卒不能通过对方马的控制点。 棋盘用坐标表示,A 点(0,0)、B 点(n,m)(n,m 为不超过 20 的...原创 2018-03-31 12:48:23 · 247 阅读 · 0 评论 -
CodeVS 1008 选数 全排列
问题描述 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为: 3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。 现在,要求你计算出和为素数共有...原创 2018-03-31 10:48:17 · 404 阅读 · 0 评论 -
CodeVS 1021 玛丽卡——最短路问题
题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行。 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城市路上所需花费的时间。 麦克在车中无意中听到有一条路正在维修,并且那儿正堵车,但没听清楚到底是哪一条路。无论哪一条路正在维修,从玛丽卡所在的城市都能到达麦克所在的城市。 ...原创 2018-03-25 23:32:04 · 480 阅读 · 0 评论 -
从上往下打印二叉树——JS和CPP
从上往下打印出二叉树的每个节点,同层节点从左至右打印。利用对列先进先出的特点来对二叉树节点进行依次遍历JavaScript版本/* function TreeNode(x) { this.val = x; this.left = null; this.right = null;} */function PrintFromTopToBottom(root){...原创 2019-08-14 16:28:01 · 301 阅读 · 0 评论 -
合并两个排序的链表——JS递归和非递归版本
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。/*function ListNode(x){ this.val = x; this.next = null;}*/function Merge(pHead1, pHead2){ if(pHead1 === null){ return pHead2; }else if(...原创 2019-08-14 21:40:12 · 479 阅读 · 0 评论 -
二叉树的镜像——JS版本
题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树8/ \6 10/ \ / \5 7 9 11镜像二叉树8/ \10 6/ \ / \11 9 7 5/* function TreeNode(x) { this.val = x; this.left = null; this...原创 2019-08-14 22:53:56 · 314 阅读 · 2 评论 -
树的子结构——JS
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)(二叉树A中可能含有相同的节点,因此HasSubtree应该进行一次根节点的递归。searchTree是以pRoot1为根节点去依次对比pRoot2的节点)function HasSubtree(pRoot1, pRoot2){ if(pRoot2 === null || pRoot1 === n...原创 2019-08-15 16:34:07 · 256 阅读 · 0 评论 -
二叉搜索树的后序遍历序列——JS
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。二叉搜索树(Binary Seach Tree , BST):它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分...原创 2019-08-15 22:22:24 · 514 阅读 · 0 评论 -
二叉树中和为某一值的路径——JS
输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)/* function TreeNode(x) { this.val = x; this.left = null; this.right = null;} */fu...原创 2019-08-16 10:32:09 · 932 阅读 · 0 评论 -
2018蓝桥杯省赛C/C++ B组——快速排序(自证自己的答案是错的,也欢迎大佬来指证)
题目大意 以下代码可以从数组a[]中找出第k小的元素。 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的。 请仔细阅读分析源码,填写划线部分缺失的内容。题目源码#include <stdio.h>int quick_select(int a[], int l, int r, int k) { int p = rand() %...原创 2018-04-14 22:00:33 · 440 阅读 · 0 评论