java
八月长安~
企图搬砖
展开
-
Java.每K个一组翻转链表
链接:牛客https://www.nowcoder.com/questionTerminal/a632ec91a4524773b8af8694a51109e7力扣https://leetcode-cn.com/problems/reverse-nodes-in-k-group/给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。说明:你需要自行定义链表结构,将输入的数据保存到原创 2021-03-25 20:06:17 · 340 阅读 · 0 评论 -
Java.分割链表
链接:https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70?tpId=8&tqId=11004&rp=2&ru=%2Factivity%2Foj&qru=%2Fta%2Fcracking-the-coding-interview%2Fquestion-ranking&tab=answerKey题目描述现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于原创 2021-03-20 00:09:37 · 293 阅读 · 0 评论 -
Java.合并有序链表
链接:https://www.nowcoder.com/practice/a479a3f0c4554867b35356e0d57cf03d?tpId=188&tqId=37516&rp=1&ru=%2Factivity%2Foj&qru=%2Fta%2Fjob-code-high-week%2Fquestion-ranking&tab=answerKey将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的,且合并后新链表依然有序。示例1原创 2021-03-06 09:48:45 · 172 阅读 · 0 评论 -
二叉树的四种遍历方式——前序、中序、后序、层序遍历(递归+非递归实现)
如果N代表根节点,L代表根节点的左子树,R代表根节点的右子树,则根据遍历根节点的先后次序有以下遍历方式:1. NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点--->根的左子树--->根的右子树。(简记为:根左右)2. LNR:中序遍历(Inorder Traversal)——根的左子树--->根节点--->根的右子树。(简记为:左根右)3. LRN:后序遍历(Postorder Traversal)——根的左子树--->根的右子树-原创 2020-09-10 16:35:36 · 1195 阅读 · 0 评论 -
Java.学分绩点
链接:https://www.nowcoder.com/questionTerminal/a0c09a7e0da04e728810a8aca7226b7b/来源:牛客网北京大学对本科生的成绩施行平均学分绩点制(GPA)。既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。 公式如下: 实际成绩 绩点 90——100 4.0 85——89 3.7 82——84 3.3 78——81 3.0 75——77 2.7 72——74 2.3 68——71 2.0 64——67 1.5 60——63原创 2021-01-13 12:21:26 · 412 阅读 · 0 评论 -
Java.小伙子,来跟奥巴马一起学编程。
链接:https://www.nowcoder.com/questionTerminal/8af708723b0f45f9a80bc80d78d3566e来源:牛客网美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!输入描述:输入在一行中给出正方形边长N(3<=N<=20)和组成正方形边的某种字符C,间隔一个空原创 2020-12-08 15:42:07 · 101 阅读 · 0 评论 -
Java.二叉搜索树与双向链表
二叉搜索树 :又称二叉排序树,它可以是以棵空树,或者具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值; 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值; 它的左右子树也分别为二叉搜索树。eg:解题思路:1>类比双向链表;2>中序遍历这棵二叉树 ;3>题目要求不能创建新的节点,意味着,需要改变原来树的结构。如图:/**public class TreeNode { int val = 0..原创 2020-09-14 16:10:11 · 117 阅读 · 0 评论 -
Java.用队列实现栈
225. 用队列实现栈https://leetcode-cn.com/problems/implement-stack-using-queues/使用队列实现栈的下列操作:push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back,peek/pop from front,size, 和is empty这些操作是合法的。 你所使用...原创 2020-09-11 23:48:34 · 120 阅读 · 0 评论 -
Java.最小栈的实现(LeetCode)
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/min-stack/设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“ge原创 2020-09-10 10:11:40 · 197 阅读 · 0 评论 -
Java.用栈实现队列
来源:https://leetcode-cn.com/problems/implement-queue-using-stacks/使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); ...原创 2020-09-09 23:58:07 · 636 阅读 · 0 评论 -
Java.链表的回文结构(快慢指针的合理利用)
题目描述对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:trueimport java.util.*;/*public class ListNode { int val; ListNode next = null; ListNode(int va原创 2020-08-11 17:39:21 · 198 阅读 · 0 评论 -
Java.实现交换两个变量的值(要求:需要交换实参的值)(类和对象的应用)
1>公有publicclass MyValue { public int Val;}public class Testdemo { //实现交换两个变量的值(要求:需要交换实参的值) public static void swap(MyValue myValue1,MyValue myValue2){ int tmp = myValue1.Val; myValue1.Val = myValue2.Val; myVa.原创 2020-07-29 11:51:27 · 517 阅读 · 0 评论 -
Java.DNA序列
链接:https://www.nowcoder.com/questionTerminal/e8480ed7501640709354db1cc4ffd42a?toCommentId=140458来源:牛客网一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。给定一个很长的DNA序列,以及要求的最小子序列长度,研.原创 2020-07-02 22:46:05 · 592 阅读 · 0 评论 -
Java.成绩排序--用数组和List两种方法实现
链接:https://www.nowcoder.com/questionTerminal/0383714a1bb749499050d2e0610418b1来源:牛客网查找和排序题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。示例:jack70peter96Tom70smith67从高到低成绩peter96jack70Tom7...原创 2020-07-01 22:50:57 · 2017 阅读 · 0 评论 -
Java.二叉树的镜像(牛客)类比 对称二叉树(LeetCode)
链接:https://www.nowcoder.com/questionTerminal/564f4c26aa584921bc75623e48ca3011来源:牛客网操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 ..原创 2020-06-30 23:24:10 · 137 阅读 · 0 评论 -
Java.组一个最小数
链接:https://www.nowcoder.com/questionTerminal/86ede762b450404dbab59352963378e9来源:牛客网给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。现给定数字,请编写程序输出能够组成的最小的数。输入描述:每个输入包含1个测试用例。每个测试用例在一行中给出10个..原创 2020-06-29 22:30:41 · 190 阅读 · 0 评论 -
Java.无缓存交换(不使用任何临时变量,直接交换两个数的值)
请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值。给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回交换后的数组。测试样例:[1,2]返回:[2,1]【解题思路】:下面给出位运算的理论计算基础: x ^ x == 0 x ^ 0 == x设M,N是常数,且a=M,b=N,则交换使用异或运算交换a和b的过程如下: a = a^b=M^N; b = a^b = M^N^N = M^0 = M;//b交换成功 a = a^b = M^N^M = M^M^N原创 2020-06-28 22:42:33 · 507 阅读 · 0 评论 -
Java.生成格雷码---(递归思想)
链接:https://www.nowcoder.com/questionTerminal/50959b5325c94079a391538c04267e15来源:牛客网在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。给定一个整数n,请返回n位的格雷码,顺序为从0开始。测试样例:1返回:["0","1"]【解题思路】:递归的思路是n位gray码是由n-1位gray码生成,.原创 2020-06-26 22:52:05 · 165 阅读 · 0 评论 -
Java.数字颠倒 ---(逆序问题)
链接:https://www.nowcoder.com/questionTerminal/ae809795fca34687a48b172186e3dafe来源:牛客网描述:输入一个整数,将这个整数以字符串的形式逆序输出程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001输入描述:输入一个int整数输出描述:将这个整数以字符串的形式逆序输出示例1输入1516000输出00061...原创 2020-06-25 23:21:30 · 1137 阅读 · 0 评论 -
Java.删数---(用集合ArrayList)
题目描述有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。输入描述:每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。输出描述:一行输出最后一原创 2020-06-24 22:38:52 · 163 阅读 · 0 评论 -
Java.n个数里最小的k个 ---(运用快排的思想)
链接:https://www.nowcoder.com/questionTerminal/cc727473d1e248ccb674eb31bd8683dc来源:牛客网找出n个数里最小的k个输入描述:每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n不超过100。输出描述:输出n个整数里最小的k个数。升序输出示例1输入3 9 6 8 -10 7 -11 19 30 12 23 5输出-11 -10 3 6 7【解题思路】:...原创 2020-06-23 22:25:55 · 295 阅读 · 0 评论 -
Java.求出n个数里出现次数大于等于n/2的数 ---(考察String类的用法)
链接:https://www.nowcoder.com/questionTerminal/eac8c671a0c345b38aa0c07aba40097b来源:牛客网输入n个整数,输出出现次数大于等于数组长度一半的数。输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。输出描述:输出出现次数大于等于n/2的数。示例1输入3 9 3 2 5 6 7 3 2 3 3 3输出3【解题思路】...原创 2020-06-22 22:11:57 · 464 阅读 · 2 评论 -
Java.神奇的口袋--运用递归思想
链接:https://www.nowcoder.com/questionTerminal/9aaea0b82623466a8b29a9f1a00b5d35来源:牛客网有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。.原创 2020-06-21 21:32:30 · 119 阅读 · 0 评论 -
Java.求最小公倍数( 论数学的重要性)
链接:https://www.nowcoder.com/questionTerminal/22948c2cad484e0291350abad86136c3来源:牛客网正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。示例1输入5 7输出35求最小公倍数:两个数a,b的最小公倍数是a*b/gcd...原创 2020-06-19 23:09:30 · 284 阅读 · 0 评论 -
Java.删除公共字符
链接:https://www.nowcoder.com/questionTerminal/f0db4c36573d459cae44ac90b90c6212来源:牛客网输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串示例1输入They are stude...原创 2020-06-18 23:12:02 · 256 阅读 · 0 评论 -
Java.字符串中找出连续最长的数字串
链接:https://www.nowcoder.com/questionTerminal/bd891093881d4ddf9e56e7cc8416562d来源:牛客网读入一个字符串str,输出字符串str中的连续最长的数字串输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。示例1输入abcd12345ed125ss123456789输出123456789【解题思路...原创 2020-06-17 22:10:52 · 1353 阅读 · 0 评论 -
Java.个位数统计问题
链接:https://www.nowcoder.com/questionTerminal/a2063993dd424f9cba8246a3cf8ef445来源:牛客网给定一个k位整数N = dk-1*10k-1 + ... + d1*101 + d0 (0<=di<=9, i=0,...,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。输入描述:每个输入包含1个测试用例,即一个不超..原创 2020-06-16 22:56:42 · 393 阅读 · 0 评论 -
Java.计算糖果问题
链接:https://www.nowcoder.com/questionTerminal/02d8d42b197646a5bbd0a98785bb3a34来源:牛客网A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条.原创 2020-06-15 21:30:31 · 322 阅读 · 0 评论 -
Java.牛客汽水瓶问题
https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f?tpId=37&&tqId=21245&rp=1&ru=/activity/oj&qru=/ta/huawei/question-ranking题目描述有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完原创 2020-06-14 23:02:31 · 332 阅读 · 0 评论 -
Java.Fibonacci数列(牛客---最小步数变为Fibonacci数)
链接:https://www.nowcoder.com/questionTerminal/18ecd0ecf5ef4fe9ba3f17f8d00d2d66?pos=11&orderByHotValue=1来源:牛客网Fibonacci数列是这样定义的:F[0] = 0F[1] = 1for each i ≥ 2: F[i] = F[i-1] + F[i-2]因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为原创 2020-06-11 22:09:39 · 454 阅读 · 0 评论 -
Java.青蛙跳台阶(简单版)
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。public class Solution { public int JumpFloor(int target) { if (target == 1){ return 1; }else if (target == 2){ return 2; }else{ re原创 2020-06-01 10:30:54 · 214 阅读 · 1 评论 -
java.求解汉诺塔问题( 递归)
汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。 public static void move(char pos1, char pos2){ System.out.println(pos1.原创 2020-06-01 10:25:54 · 215 阅读 · 0 评论