刷题
刷题
牛code
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构-不用加减乘除做加法-java
1.题目写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。2.代码public class Test { public static int Add(int num1,int num2) { if (num1==0){ return num2; } if (num2==0){ return num1; } return recursi原创 2021-12-09 20:15:55 · 131 阅读 · 0 评论 -
数据结构-接雨水问题-java
1.题目给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个柱子高度图,计算按此排列的柱子,下雨之后能接多少雨水。(数组以外的区域高度视为0)2.代码public long maxWater (int[] arr) { // write code here long resu = 0; if (arr.length<=2){ return resu; } int原创 2021-12-05 17:48:27 · 859 阅读 · 0 评论 -
数据结构-数组中的最长连续子序列-java
1.题目给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数)2.代码public int MLS (int[] arr) { // write code here int n = arr.length; if(n == 0){ return 0; } if(n == 1){ return 1;原创 2021-12-04 14:57:08 · 1052 阅读 · 0 评论 -
数据结构-滑动窗口的最大值-java
1.题目给定一个长度为 n 的数组 num 和滑动窗口的大小 size ,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[原创 2021-12-01 20:12:49 · 222 阅读 · 0 评论 -
数据结构-栈的压入、弹出序列-java
1.题目输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。2.题解直接模拟即可。因为弹出之前的值都会先入栈,所以这里用个栈来辅助。1.初始化:用指针i指向pushA的第一个位置, 指针j指向popV的第一个位置2.如果pushA[i] != popA[j], 那么应该将push原创 2021-11-29 21:09:30 · 709 阅读 · 0 评论 -
数据结构-删除链表的节点-java
1.题目给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。2.示例输入:{2,5,1,9},5返回值:{2,1,9}说明:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 2 -> 1 -> 93.代码 public ListNode deleteNode (ListNode head, int val) { // write code here ListNode h原创 2021-11-28 16:33:48 · 459 阅读 · 0 评论 -
数据结构-反转链表-java
1.题目给定一个单链表的头结点pHead,长度为n,反转该链表后,返回新链表的表头。2.代码 public static ListNode ReverseList(ListNode head) { //新链表 ListNode newHead = null; while (head != null) { //先保存访问的节点的下一个节点,保存起来 //留着下一步访问的 Li原创 2021-11-27 12:54:08 · 540 阅读 · 0 评论 -
数据结构-从尾到头打印链表-java
1.题目输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)2.代码ArrayList<Integer> list = new ArrayList<>(); while(listNode!=null){ list.add(listNode.val); listNode = listNode.next; } if (list.size()>0){原创 2021-11-27 11:51:50 · 510 阅读 · 0 评论 -
数据结构-删除有序链表中重复的元素-java
1.题目删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次例如:给出的链表为1→1→2,返回 1→2.给出的链表为1→1→2→3→3,返回1→2→3.2.代码public ListNode deleteDuplicates (ListNode head) { // write code here if (head==null){ return null; } if (he原创 2021-11-25 20:20:40 · 724 阅读 · 0 评论 -
数据结构-反转数字-java
1.题目给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。你有注意到翻转后的整数可能溢出吗?因为给出的是32位整数。翻转可能会导致溢出,如果反转后的结果会溢出就返回 0。2.代码public int reverse (int x) { // write code here String t = String.valueOf(x); String a[] = new String [t.length()];原创 2021-11-25 20:18:42 · 532 阅读 · 0 评论 -
数据结构-链表中倒数最后k个结点-java
1.题目输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。2.代码public class Test { public static class ListNode { int val; ListNode next = null; public ListNode(int val) { this.val = val;原创 2021-11-24 20:41:33 · 799 阅读 · 0 评论 -
数据结构-回文数字-java
1.题目在不使用额外的内存空间的条件下判断一个整数是否是回文。回文指逆序和正序完全相同。提示:负整数可以是回文吗?(比如-1)如果你在考虑将数字转化为字符串的话,请注意一下不能使用额外空间的限制你可以将整数翻转。但是,如果你做过题目“反转数字”,你会知道将整数翻转可能会出现溢出的情况,你怎么处理这个问题?2.题解可以将数字从最低位向最高位枚举得到逆序数字,比较是否相同,若相同则是回文数,若不相同则不是回文数。3.代码 public boolean isPalindrome (i原创 2021-11-23 19:52:36 · 860 阅读 · 0 评论 -
数据结构-数组中出现次数超过一半的数字-java
1. 题目给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。2.代码public int MoreThanHalfNum_Solution(int [] array) { if (array.length==1){ return array[0]; } int原创 2021-11-23 19:10:47 · 647 阅读 · 0 评论 -
数据结构-扑克牌顺子-java
题目现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。有如下规则:A为1,J为11,Q为12,K为13,A不能视为14大、小王为 0,0可以看作任意牌如果给出的五张牌能组成顺子(即这五张牌是连续的)就输true,否则就输出false。4.数据保证每组5个数字,每组最多含有4个零,数组的数取值为 [0, 13]代码public boolean IsContinuous(int [] numbers) { Arrays.sort(numbers)原创 2021-11-22 21:56:40 · 822 阅读 · 0 评论 -
数据结构-二叉树的最大深度-java
1.题目求给定二叉树的最大深度,深度是指树的根节点到任一叶子节点路径上节点的数量。最大深度是所有叶子节点的深度的最大值。2.代码 public int maxDepth (TreeNode root) { // write code here if (root == null){ return 0; } int lDepth = maxDepth(root.left); int rDe原创 2021-11-22 19:29:10 · 199 阅读 · 0 评论 -
数据结构-在旋转过的有序数组中寻找目标值-java
1.题目在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)2.代码public static int FirstNotRepeatingChar(String str) { HashSet<String> sets = new HashSet<>(); List<String> list = new ArrayList<>(); L原创 2021-11-21 14:33:04 · 383 阅读 · 0 评论 -
数据结构-将升序数组转化为平衡二叉搜索树-java
1.题目给定一个升序排序的数组,将其转化为平衡二叉搜索树(BST).平衡二叉搜索树指树上每个节点 node 都满足左子树中所有节点的的值都小于 node 的值,右子树中所有节点的值都大于 node 的值,并且左右子树的节点数量之差不大于1.2.代码public class Test { public static class TreeNode { public TreeNode(int val) { this.val = val;原创 2021-11-21 14:02:55 · 571 阅读 · 0 评论 -
数据结构-在旋转过的有序数组中寻找目标值-java
题目有一个长度为 n 的按严格升序排列的整数数组 nums ,在实行 search 函数之前,在某个下标 k 上进行旋转,使数组变为[nums[k],nums[k+1],…,nums[nums.length-1],nums[0],nums[1],…,nums[k-1]]。给定旋转后的数组 nums 和一个整型 target ,请你查找 target 是否存在于 nums 数组中并返回其下标(从0开始计数),如果不存在请返回-1。比如,数组[0,2,4,6,8,10]在下标3处旋转之后变为[6,8,10原创 2021-11-18 20:33:11 · 624 阅读 · 2 评论 -
数据结构-二叉树的镜像-java
1.題目操作给定的二叉树,将其变换为源二叉树的镜像。2.题解先交换根节点的左右子树的位置,然后向下递归,把左右子树的根节点作为下次循环的根节点。3.代码public static class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val =原创 2021-11-17 22:11:59 · 629 阅读 · 0 评论 -
数据结构-对称的二叉树-java
1.题目给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)例如:下面这棵二叉树是对称的2.代码public class Test { public static class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val原创 2021-11-16 22:27:02 · 412 阅读 · 0 评论 -
数据结构-判断是不是平衡二叉树-java
1.题目输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。2.题解先求出以每个结点为根的树的高度,然后再判断,其实可以直接再求高度的同时,直接判断即可。利用后序遍历:左子树、右子树、根节点,可以先递归到叶子节点,然后在回溯的过程中来判断是否满足条件。3.代码原创 2021-11-16 21:01:55 · 651 阅读 · 0 评论 -
数据结构-调整数组顺序使奇数位于偶数前面-java
1.题目输入一个长度为 n 整数数组,数组里面不含有相同的元素,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。2.代码public int[] reOrderArray (int[] array) { // write code here List<Integer> list = new ArrayList<>();//偶数原创 2021-11-15 22:44:50 · 712 阅读 · 0 评论 -
数据结构-合并两个有序的数组(2)-java
代码public void merge(int A[], int m, int B[], int n) { int []w = new int[m+n]; int i=0,j=0; int t = 0; while(i<m||j<n){ if (i>=m){ w[t] = B[j]; j++; }原创 2021-11-15 22:41:33 · 301 阅读 · 0 评论 -
数据结构-数字在升序数组中出现的次数-java
1.题目给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数2.代码public int GetNumberOfK(int [] array , int k) { if (array==null||array.length==0){ return 0; } int i=0,j=array.length-1; while (array[i]!=k||array[j]!原创 2021-11-14 18:36:54 · 424 阅读 · 0 评论 -
数据结构-有效括号序列-java
1.题目给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。2.题解我们遍历字符串中的所有字符1,如果遇到了左括号,就把对应的右括号压栈(比如遇到了字符’(’,就把字符’)'压栈)。2,如果遇到了右括号1)查看栈是否为空,如果为空,说明不能构成有效的括号,直接返回false。2)如果栈不为空,栈顶元素出栈,然后判断出栈的这个原创 2021-11-14 17:36:00 · 274 阅读 · 0 评论 -
数据结构-判断一个链表是否为回文结构-java
1.题目给定一个链表,请判断该链表是否为回文结构。回文是指该字符串正序逆序完全一致。2.代码public boolean isPail (ListNode head) { // write code here if (head!=null&&head.next==null){ return true; } List<Integer> lists = new ArrayList<原创 2021-11-14 15:26:19 · 448 阅读 · 0 评论 -
数据结构-合并两个有序的数组-java
题目给出一个整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组.代码public static void merge(int A[], int m, int B[], int n) { for (int i = 0; i < n; i++) { A[m+i] = B[i]; } Arrays.sort(A); }...原创 2021-11-07 16:15:23 · 421 阅读 · 0 评论 -
数据结构-跳台阶-java
题目一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。题解假设有n阶台阶,在所有的跳法中,由于青蛙一次只能跳1步或者2步,所以青蛙跳上最后一阶只能由f(n-1)+1 或者f(n-2)+2 这两种情况得来。即:f(n)=f(n-1)+f(n-2).同理:f(n-1)=f(n-2)+f(n-3),以此类推。这其实就是一个斐波拉契数列,可以用递归来做。代码public class test{ public stat原创 2021-11-07 15:35:26 · 141 阅读 · 0 评论 -
数据结构-用两个栈实现队列-java
题目用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。题解stack1用来进,stack2用来出,当需要pop的时候:若stack2为空,则将stack1的倒装放入stack2,否则,直接stack2.pop().代码import java.util.Stack;public class queens { public static原创 2021-11-07 15:00:43 · 210 阅读 · 0 评论 -
数据结构-判断回文-java
题目给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。字符串回文指该字符串正序与其逆序逐字符一致。解题一利用栈,对字符串进行入栈和出栈操作,在进行比较。代码public static boolean judge2 (String str) { if (str.length()<2){ return true; } Stack<Character原创 2021-11-04 19:47:31 · 507 阅读 · 0 评论 -
数据结构-最大公约数-java
题目如果有一个自然数 a 能被自然数 b 整除,则称 a 为 b 的倍数, b 为 a 的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。输入 a 和 b , 请返回 a 和 b 的最大公约数。解题一找到两个数最小的值,然后循环与a,b取余。代码public static int gcd (int a, int b) { if (a%b==0||b%a==0){ return a>原创 2021-11-03 19:46:44 · 221 阅读 · 0 评论 -
数据结构-斐波那契数列-java
题目大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。斐波那契数列是一个满足下列式子的数列。解题一已知斐波那契数列的公式为f(n)=f(n-1)+f(n-2)。要求f(n)就需要知道f(n-1)和f(n-2),而求f(n-1)需要f(n-2)和f(n-3),依次推导,直到题目给出的边界{f(0)=0,f(1)=1}.代码/** * @ClassName FibonacciSequence * @Description 斐波那契数列 * @Au原创 2021-11-02 21:24:03 · 463 阅读 · 0 评论 -
数据结构-反转字符串-java
题目写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)解题使用栈,把字符串分割存入到栈里,在依次拿出。代码实现import java.util.Stack;/** * @ClassName reverString * @Description 字符串反转 * @Author nbb * @Date 2021-11-01 20:44 * @Version 1.0 */public class reverString { /*原创 2021-11-01 21:04:41 · 216 阅读 · 0 评论 -
数据结构-列表反转-java
1.题目描述:给定一个单链表的头结点pHead,长度为n,反转该链表后,返回新链表的表头。数据范围: n\leq1000n≤1000要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n) 。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。2.解题:使用栈,因为栈是先进后出的。实现原理就是把链表节点一个个入栈,当全部入栈完之后再一个个出栈,出栈的时候在把出栈的结点串成一个新的链表。原理如下:3.代码实现import ja原创 2021-10-31 22:24:48 · 625 阅读 · 0 评论 -
力扣605. 种花问题
力扣605. 种花问题题目描述:假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false。代码tmp = [0]+flowerbed+[0] for i in range(1,len(tmp)-1原创 2021-05-28 20:31:35 · 90 阅读 · 1 评论
分享