OJ练习
Online Judge代码练习
moi_r
这个作者很懒,什么都没留下…
展开
-
从尾到头打印链表-力扣
原题链接一、题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000二、代码实现/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { va原创 2020-06-28 22:59:23 · 122 阅读 · 0 评论 -
和为s的连续正数序列-力扣
原题链接一、题目描述输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]限制:1 <= target <= 10^5二、题目分析本题利用滑动窗口(可以看成是数组中框起来的一部分)解,我设置的原创 2020-06-28 22:54:17 · 1119 阅读 · 0 评论 -
最小的k个数-力扣
原题链接一、题目描述输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]限制:0 <= k <= arr.length <= 100000 <= arr[i] <= 10000二、代码实现class原创 2020-05-17 20:54:20 · 215 阅读 · 0 评论 -
数组中出现次数超过一半的数字-力扣
原题链接一、题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 50000二、代码实现class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); re原创 2020-05-17 20:50:32 · 170 阅读 · 0 评论 -
链表中倒数第k个节点-力扣
原题链接一、题目描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.二、题目分析方法一:遍历链表,求出链表长度 len ,然后再让 head 节点走 (len-k)步,即可找到倒数第 k原创 2020-05-17 20:45:29 · 176 阅读 · 0 评论 -
和为s的两个数字-力扣
原题链接一、题目描述输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [...原创 2020-05-07 00:10:21 · 132 阅读 · 0 评论 -
二进制中1的个数-力扣
原题链接一、题目描述请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示...原创 2020-05-04 16:58:30 · 156 阅读 · 0 评论 -
连续子数组的最大和-力扣
原题链接一、题目描述输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。提示:1 <= arr.length <= 10^5-100 ...原创 2020-05-04 16:37:39 · 366 阅读 · 0 评论 -
打印从1到最大的n位数-力扣
原题链接一、题目描述输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印n 为正整数二、代码实现class Solution { public int[] printNumbers...原创 2020-05-04 16:30:02 · 154 阅读 · 0 评论 -
替换空格-力扣
原题链接一、题目描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”二、代码实现class Solution { public String replaceSpace(String s) { //直接使用java的string自带的replace方...原创 2020-04-18 20:10:30 · 155 阅读 · 0 评论 -
旋转数组的最小数字-力扣
原题链接一、题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0二、代码实现class Solution...原创 2020-04-18 19:44:02 · 134 阅读 · 0 评论 -
二维数组中的查找-力扣
原题链接一、题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ 1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13,...原创 2020-04-16 19:58:42 · 296 阅读 · 0 评论 -
青蛙跳台阶问题-力扣
原题链接一、题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21提示:0 <= n <= 100二、题目分析设跳上 n 级台...原创 2020-04-16 19:44:59 · 391 阅读 · 0 评论 -
数组中重复的数字-力扣
原题链接一、题目描述找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000二、题目分析...原创 2020-04-15 21:56:11 · 227 阅读 · 0 评论 -
斐波那契数列-力扣
原题链接一、题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:...原创 2020-04-09 00:17:39 · 173 阅读 · 0 评论 -
《剑指offer》练习-力扣
《剑指offer(第二版)》-力扣1、面试题58 - II. 左旋转字符串持续更新中…原创 2020-04-08 00:26:46 · 306 阅读 · 0 评论 -
左旋转字符串-力扣
一、题目描述字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umgh...原创 2020-04-08 00:18:47 · 202 阅读 · 0 评论 -
大整数排序_牛客网
一、题目描述对N个长度最长可达到1000的数进行排序。输入描述:输入第一行为一个整数N,(1<=N<=100)。接下来的N行每行有一个数,数的长度范围为1<=len<=1000。每个数都是一个正数,并且保证不包含前缀零。输出描述:可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。示例1输入3 ...原创 2020-03-09 20:43:21 · 142 阅读 · 0 评论 -
找X_牛客网
一、题目描述输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。输入描述:测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。输出描述:对于每组输入,请输出结果。示例1输入21 30输出-1二、代码实现import java.util.*;publi...原创 2020-03-06 15:23:38 · 156 阅读 · 0 评论 -
记票统计_牛客网
一、问题描述请实现接口:unsigned int AddCandidate (char* pCandidateName);功能:设置候选人姓名输入: char* pCandidateName 候选人姓名输出:无返回:输入值非法返回0,已经添加过返回0 ,添加成功返回1Void Vote(char* pCandidateName);功能:投票输入: char* pCandidat...原创 2020-03-05 23:34:33 · 146 阅读 · 0 评论 -
数字之和_牛客网
一、问题描述对于给定的正整数 n,计算其十进制形式下所有位置数字之和,并计算其平方的各位数字之和。输入描述:每行输入数据包括一个正整数n(0<n<40000)输出描述:对于每个输入数据,计算其各位数字之和,以及其平方值的数字之和, 输出在一行中,之间用一个空格分隔,但行末不要有空格。示例1输入4129739999输出4 73 916 22...原创 2020-03-04 23:04:59 · 343 阅读 · 0 评论 -
学分绩点_牛客网
一、问题描述北京大学对本科生的成绩施行平均学分绩点制(GPA)。既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。公式如下:实际成绩 绩点90——100 4.085——89 3.782——84 3.378——81 3.075——77 2.772——74 2.368——71 ...原创 2020-03-02 22:06:27 · 327 阅读 · 0 评论 -
长按键入_力扣
题目描述:你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。示例 1:输入:name = “alex”, typed = “aaleex”输出:true解释:‘alex’ 中的 ‘a’ 和 ‘e’...原创 2020-02-28 20:09:00 · 95 阅读 · 0 评论 -
合并两个有序数组_力扣
题目描述:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nu...原创 2020-02-26 23:42:14 · 150 阅读 · 0 评论 -
赎金信_力扣
题目描述:给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。)注意:你可以假设两个字符串均只含有小写字母。canConstruct(“a”,...原创 2020-02-22 16:56:39 · 191 阅读 · 1 评论 -
搜索插入位置_力扣
题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输...原创 2020-02-21 22:00:08 · 155 阅读 · 0 评论 -
移除元素_力扣
题目描述:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums ...原创 2020-02-21 00:04:35 · 91 阅读 · 0 评论 -
变态跳台阶_牛客网
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:一共有n个台阶,除最后一个台阶(第n个台阶)是必须要跳的,其余n-1个台阶都有跳或者不跳两种情况,所以共有2^(n-1)种结果。代码实现:public class Solution { public int JumpFloorII(int target) ...原创 2020-02-13 22:46:06 · 115 阅读 · 0 评论 -
小易的升级之路_牛客网
题目:小易的升级之路小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪物,每个怪物的防御力为b1,b2,b3…bn.如果遇到的怪物防御力bi小于等于小易的当前能力值c,那么他就能轻松打败怪物,并且使得自己的能值增加bi;如果bi大于c,那他也能打败怪物,但他的能力值只能增加bi 与c的最大公约数.那么问题来了,在一系列...原创 2019-12-04 18:23:44 · 198 阅读 · 0 评论 -
数字分类_牛客网
题目描述:数字分类给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和;A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…;A3 = 被5除后余2的数字的个数;A4 = 被5除后余3的数字的平均数,精确到小数点后1位;A5 = 被5除后余4的数字中最大数字。代码实现:import java.uti...原创 2019-12-03 15:09:27 · 517 阅读 · 0 评论 -
二叉树平衡检查_牛客网
题目描述:二叉树平衡检查实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。给定指向树根结点的指针 TreeNode* root,请返回一个bool,代表这棵树是否平衡。代码实现:/* 二叉树平衡检查 实现一个函数,检查二叉树是否平衡,平衡的定义如下, 对于树中的任意一个结点,其两颗子树的高度差不超过1。 给定...原创 2019-12-03 15:06:05 · 138 阅读 · 0 评论 -
字符串中找出连续最长的数字串_牛客网
题目:读入一个字符串str,输出字符串str中连续最长的数字串。输入描述:一个测试输入包含一个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中连续最长的数字串。示例1输入:abcd12345ed125ss123456789输出:123456789思路:用两层循环判断,第一层用于记录是否为数字开始,第二层记录有多少个数字。最后将最长的数字串从原字符串中截...原创 2019-11-10 19:34:44 · 347 阅读 · 0 评论 -
合法括号序列判断_牛客网
题目:对于一个字符串,设计一个算法,判断其是否为一个合法的括号串。给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。测试样例:“(()())”,6返回:true测试样例:“()a()()”,7返回:false测试样例:“()(()()”,7返回:falseimport java.util.*;public class Parenthesis {...原创 2019-11-10 19:40:29 · 277 阅读 · 0 评论 -
删除公共字符_牛客网
题目:输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符。输入描述:“They are students”“aeiou”输出描述:Thy r stdnts源代码:import java.util.ArrayList;import java.util.Scanner;public class Main { public static void main(Strin...原创 2019-11-10 19:47:31 · 230 阅读 · 0 评论 -
末尾0的个数_牛客网
题目:输入一个正整数n,求n!(即阶乘)末尾有多少个0。最简单的思路就是输入一个正整数,先求出它的阶乘,然后求其末尾有多少个0,但是这种方法会产生溢出,所以在此给出另一种方法。我们在计算n的阶乘时,实际上就是把所有小于等于n的正整数分解成质因数,然后再将其乘到一起,那么末尾0的个数实际上就是2*5的个数,而2的个数明显是很多很多的,所以问题就转化成了5的个数。而只有5的倍数才有5这个因数,所...原创 2019-11-17 15:08:37 · 435 阅读 · 0 评论 -
数字颠倒_牛客网
题目:输入一个整数,将这个整数以字符串的形式逆序输出,程序不考虑负数的情况,若数字含有0,则逆序形式也为0。首先输入一个整数,将其转换为字符串,然后可通过以下两种方法将其按逆序输出.方法一:通过for循环倒序遍历字符串进行输出。import java.util.Scanner;public class Main2 { public static void main(String[]...原创 2019-11-17 15:17:39 · 322 阅读 · 0 评论 -
机器人走方格_牛客网
题目:有一个X*Y的网格,一个机器人只能从格点且只能向右或向下走,要从最上角走到右下角。设计一个算法,计算机器人有多少种算法。给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。分析:定义一个二维数组存放机器人的走法数目。当机器人位于第一行时,不管走到几列,它的走法只有一种,即向右走;同理,当机器人位于第一列时,不管它此时走到了第几行,走法也只有一种,即向...原创 2019-11-18 18:19:02 · 334 阅读 · 0 评论 -
构建乘积数组_牛客网
题目:构建乘积数组给定一个数组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[0] = A[1] * A[2] * A[3] * A[4] *…*A[n-1] ;(没有A[0])B[1]= A[0] *A[2] * A[3] * A[4] *…*A[n-...原创 2019-11-19 16:44:14 · 90 阅读 · 0 评论 -
无缓存交换_牛客网
题目:请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值。给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回交换后的数组。测试样例:[1,2]返回:[2,1]分析:若不使用任何临时变量,可采用异或的方式实现。源代码:import java.util.*;public class Exchange { public int[] exchangeA...原创 2019-11-19 23:42:59 · 173 阅读 · 0 评论 -
生成格雷码_牛客网
题目:生成格雷码在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。给定一个整数n,请返回n位的格雷码,顺序为从0开始。测试样例:1返回:[“0”,“1”]分析: 递归的思路就是n位gray码是由n-1位gray码生成。比如:求n=3的gray码时,先了解n=2的gray码为(00,0...原创 2019-11-20 00:07:29 · 390 阅读 · 0 评论