![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法练习
woshiwu6666
这个作者很懒,什么都没留下…
展开
-
BM23 二叉树的前序遍历
代码】BM23 二叉树的前序遍历。原创 2022-08-12 15:03:20 · 327 阅读 · 0 评论 -
BM24 二叉树的中序遍历
代码】BM24二叉树的中序遍历。原创 2022-08-01 17:29:03 · 196 阅读 · 0 评论 -
BM3 链表中的节点每k个一组翻转
BM3 链表中的节点每k个一组翻转原创 2022-07-31 00:34:12 · 94 阅读 · 0 评论 -
BM2 链表内指定区间反转
BM2链表内指定区间反转原创 2022-07-26 17:33:48 · 214 阅读 · 0 评论 -
抽奖-按权重随机选择
抽奖原创 2021-10-25 20:44:10 · 172 阅读 · 0 评论 -
字符流中第一个不重复的字符
使用map记录次数使用LinkedHashMap<Character,Integer>可以做到按序添加hashmap添加进去以后key的顺序会变乱import java.util.*;public class Solution { //Insert one char from stringstream //每次传入一个字符,用map去记录次数 //按顺序添加 LinkedHashMap<Character,Integer> ci=new .原创 2021-10-18 23:22:46 · 68 阅读 · 0 评论 -
孩子们的游戏
考按余数去找规律import java.util.*;public class Solution { public int LastRemaining_Solution(int n, int m) { //直接用list循环剔除 ArrayList<Integer> list=new ArrayList<Integer>(); //list里面放数字 for(int i=0;i<=n-1;i++) .原创 2021-10-18 21:01:50 · 1258 阅读 · 0 评论 -
把数组排成最小的树
使用冒泡篇排序法将数字字符串转换成数字import java.util.ArrayList;public class Solution { public String PrintMinNumber(int [] numbers) { //从左到右,两两比较,小的在前面 String ans=""; if(numbers.length==0) { return ""; } if.原创 2021-10-18 19:41:01 · 56 阅读 · 0 评论 -
牛客网 剪绳子
使用递归import java.util.*;public class Solution { public int cutRope(int target) { //利用递归 int[] dp=new int[target+1]; //3以下的都无法再细分了 dp[1]=1; dp[2]=2; dp[3]=3; for(int i=4;i<=target;i++) {.原创 2021-10-18 16:46:03 · 63 阅读 · 0 评论 -
二进制中一的个数
使用了Integer.toBinaryString(n)参考Integer.toBinaryString(n)的使用方法import java.util.*;public class Solution { public int NumberOf1(int n) { int total=0;// System.out.println(Integer.toBinaryString(n));// System.out..原创 2021-10-18 16:11:36 · 52 阅读 · 0 评论 -
数值的整数次方
指数分为正负数即可现将负数转换为正数,最后再求倒数返回public class Solution { public double Power(double base, int exponent) { //判断指数是正数还是负数 int fu=0; if(exponent<0) { fu=1; exponent=-exponent; } doub.原创 2021-10-18 12:22:07 · 42 阅读 · 0 评论 -
数组中只出现一次的两个数字
异或符号,与符号的使用import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @return int整型一维数组 */ public int[] FindNumsAppearOnce (int[] array) { // wr.原创 2021-10-17 23:33:53 · 58 阅读 · 0 评论 -
左旋字符串
新建一个数组去记录最终的移动结果是怎样的然后再把这个结果赋值给新字符串字符串不能按位赋值public class Solution { public String LeftRotateString(String str,int n) { //循环左移 int len=str.length(); //如果移动的数量和字符串长度相同,不用移 if(n==len) { return str;.原创 2021-10-16 19:24:40 · 55 阅读 · 0 评论 -
求1+2+3+...+n
使用等差数列右移1就是除2import java.util.*;public class Solution { public int Sum_Solution(int n) { return (int)(Math.pow(n,2)+n)>>1; }}原创 2021-10-16 18:25:09 · 90 阅读 · 0 评论 -
和为2的两个数字
从左到右进行判断import java.util.*;public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> list=new ArrayList<Integer>(); if(array.length==0) { return .原创 2021-10-16 18:08:45 · 88 阅读 · 0 评论 -
整数中1出现的次数(从1到n整数中1出现的次数)
转换成字符串进行统计public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int total=0; for(int i=1;i<=n;i++) { int len1=Integer.toString(i).length(); String a=Integer.toString(i); fo.原创 2021-10-16 17:11:34 · 54 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面(二)
先找偶数再找奇数最后叠加import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @return int整型一维数组 */ public int[] reOrderArrayTwo (int[] array) { // wr.原创 2021-10-16 16:44:47 · 63 阅读 · 0 评论 -
矩阵中的路径
import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param matrix char字符型二维数组 * @param word string字符串 * @return bool布尔型 */ public boolean hasPath (char[][] matrix, Str原创 2021-10-12 17:40:44 · 45 阅读 · 0 评论 -
牛客网-矩形覆盖
动态规划有点像青蛙跳格子先判断最后一步的情况,最后一步可以是竖着放两个矩形占了两行,也可以是横着放了一格占了一行然后赋予初值,按序增加即可public class Solution { public int rectCover(int target) { //先给低的赋值 int[] ans=new int[99]; ans[1]=1; ans[2]=2; for(int i=3;i<=target;i.原创 2021-10-11 13:11:24 · 80 阅读 · 0 评论 -
栈的压入、弹出序列
新建一个栈,将数组A压入栈中,当栈顶元素等于数组B时,就将其出栈,当循环结束时,判断栈是否为空,若为空则返回true.A是进栈,B判断是否出栈import java.util.*;public class Solution { public boolean IsPopOrder(int [] pushA,int [] popA) { //新建一个栈,将数组A压入栈中,当栈顶元素等于数组B时,就将其出栈,当循环结束时,判断栈是否为空,若为空则返回true. //.原创 2021-10-10 14:43:45 · 49 阅读 · 0 评论 -
链表中倒数最后k个结点
找清楚链表中的结点关系即可执行次数,通过列举一个小的链表去发现规律import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */public class Solution { /** * 代码中的类名、方法名、参数名已经.原创 2021-10-10 13:51:17 · 72 阅读 · 0 评论 -
二叉搜索树与双向链表
中序遍历先存放到list当中再根据list指向前后左右/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/import java.util.*;public class Solution { List<T.原创 2021-10-09 19:03:19 · 56 阅读 · 0 评论 -
二叉树的下一个结点
根据二叉树的规则分三类即可/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null; TreeLinkNode(int val) { this.val = val; }}*/public class Solution { public TreeLi.原创 2021-10-09 14:53:39 · 51 阅读 · 0 评论 -
2021-10-08
从上往下打印二叉树该题与之字形打印二叉树类似都是利用两个栈去实现import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { Arr.原创 2021-10-08 17:12:12 · 41 阅读 · 0 评论 -
链表中环的入口节点
使用快慢指针,快指针一次走两,慢指针一次走一两指针肯定会在环内相遇/*public class ListNode {int val;ListNode next = null;ListNode(int val) { this.val = val;}}*/public class Solution {public ListNode EntryNodeOfLoop(ListNode pHead) { //判断是否有环 if(pHead==null||pHead..原创 2021-10-08 14:58:38 · 55 阅读 · 0 评论 -
重建二叉树
reConstructBinaryTree的使用import java.util.Arrays;/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { pu.原创 2021-10-04 09:49:34 · 50 阅读 · 0 评论 -
二维数组中的查找
该题有点像图里面的广搜public class Solution { public boolean Find(int target, int [][] array) { //从左下角开始遍历 int size=array.length; int size1=array[0].length; if(size==0||size1==0) { ret原创 2021-09-22 20:01:19 · 68 阅读 · 0 评论 -
二叉搜索树的第k个节点
import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { Map<Integer,TreeNode> map = new Tree原创 2021-09-20 22:54:54 · 51 阅读 · 0 评论 -
按之字型打印二叉树
import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { public ArrayList<ArrayList<Integer&原创 2021-09-17 17:48:19 · 73 阅读 · 0 评论 -
广度搜索之字型打印二叉树
java广度搜索java广度搜索之字型打印二叉树错误代码import java.util.ArrayList;import java.util.Stack;import java.util.Collections; /*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { t原创 2021-09-15 20:55:21 · 64 阅读 · 0 评论 -
构建乘积数组
import java.util.ArrayList;public class Solution {public int[] multiply(int[] A) {int size=A.length;if(size<1){return null;}int[] B=new int[size]; for(int i=0;i<size;i++) { B[i]=1; } for(int i=0;i<size;i++) {原创 2021-09-14 17:34:49 · 59 阅读 · 0 评论 -
不用加减乘除法做加法
位运算^与或,不同为1&与,两个位1才为1public class Solution { public int Add(int num1,int num2) { int sum=num1; //判断进位是否为0 while(num2!=0) { //求和 sum=num1^num2; //求进位 num2=(num1&num2)<<1;原创 2021-09-13 15:45:45 · 53 阅读 · 0 评论 -
扑克牌顺子
按数字规律写代码public class Solution { public boolean IsContinuous(int [] numbers) { //先排序 //k去统计0的个数 int k=0; for(int i=0;i<5;i++) { int min=numbers[i]; for(int j=i+1;j<5;j++) {原创 2021-09-12 19:09:57 · 124 阅读 · 0 评论 -
平衡二叉树
public class Solution { boolean ans= true; int cen=1; public boolean IsBalanced_Solution(TreeNode root) { if(root==null) { return ans; } int k=depth(root); return ans; }原创 2021-09-11 16:56:01 · 59 阅读 · 0 评论 -
连续子数组的最大和
有增加作用的加上,没增加作用的舍弃用一个ans数组记录从某个数到array[i]的最大值最后进行比较public class Solution { public int FindGreatestSumOfSubArray(int[] array) { int size=array.length; int[] ans=new int[size]; ans[0]=array[0]; for(int i=1;i<size;i+.原创 2021-09-11 11:21:15 · 63 阅读 · 0 评论 -
二叉树的深度
特别值得注意的地方是,ans和max的作用其中max是用来比较记录答案,即最大值而ans是用来记录每次的递增过程,每条路的深度。返回上一个节点的时候要-1,因为它是全局变量public class Solution { //变量定义了在这里,全局变量 int ans=1; int max=0; public int TreeDepth(TreeNode root) { if(root==null) { a原创 2021-09-10 20:40:32 · 65 阅读 · 0 评论 -
二叉树的镜像
自己写遇到瓶颈,子节点交换完无法返回到pRoot当中import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */public class Solution { /**原创 2021-09-08 16:43:22 · 43 阅读 · 0 评论 -
动态规划
动态规划1原创 2021-03-27 22:33:19 · 115 阅读 · 0 评论 -
背包问题+贪心算法
背包问题可分为三种完全背包多重背包0-1背包最优装载原创 2021-04-10 07:46:02 · 217 阅读 · 1 评论 -
题目 1004: [递归]母牛的故事
package 算法练习;import java.util.Scanner;import java.util.Stack;public class 母牛的故事 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); int a=in.nextInt(); while(a!=0) { if(a<原创 2021-04-09 22:25:42 · 65 阅读 · 0 评论