
数据结构
qq_35686293
酷毙的工程师
展开
-
力扣题库4
这道题目的思路还是挺简单的,不过这道题目有一个细节还是挺麻烦的,就是就是当n=0,m=0或n=1,m=0分别对应的情况是[],[[]],里面都没有元素。而第二种n可以为1原创 2021-08-09 00:35:12 · 135 阅读 · 0 评论 -
最长回文子串
这道题目难度时不大,对题目进行理解就可以了,首先要知道什么是回文串按照我对题目的理解,回文串有两种情况。1)如bab这种以a为中心对称的串2)bb这种以自身字母相重复的串原创 2021-08-08 08:56:23 · 101 阅读 · 0 评论 -
JZ53 表示数值的字符串
这道题目如果你用if判断话,我现在还没有写出来,使用java的异常捕捉是很简单的。import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return bool布尔型 */ public boolean isNumeric (String ...原创 2021-07-28 11:40:34 · 81 阅读 · 0 评论 -
JZ57 二叉树的下一个结点
牛客上面的一道题目,题目意思要理解,下一节点,是pNode的下一节点,pNode不一点是根节点。我是用非递归方法来做的,很麻烦,各种结构要考虑清楚。推荐大佬做法;https://blog.youkuaiyun.com/qq_43632625/article/details/108485594...原创 2021-07-27 09:06:31 · 82 阅读 · 0 评论 -
JZ56 删除链表中重复的结点
今天在用java提交题目的时候,突然发现之前在写条件判断的问题,这一次又出现了同样的问题,比如这一题,现在就来说说我出现的问题。while(mark==p1.val&&p1!=null) p1 = p1.next;这是一个数字重复覆盖的while循环,当我像上面那样写的时候,如果出现{1,1,1,1,1}这种情况,当p1指向最后一个数字的next的时候,p1=null,是没有值的java就会异常退出,因为p1.var是没有值的。当把...原创 2021-07-26 21:47:39 · 84 阅读 · 0 评论 -
JZ33 丑数
这道题目的思路有点难想到,它说第几个丑数,而且丑数是由什么组成的。第几个丑数,是指排序后的第几个数,而又因为由质因数2,3,5,组成。搜先初始化一个数组arr,其中arr[0]=1,也就是第一个丑数,然后由第一个丑数乘以,2,3,5丑数,取最小的那一个为arr的第二个数,然后,判断最小的那个数是由这三个因子那一个乘已第一个数,然后对应因子的下标加1,如id1++,最后这样循环,得到一个数组,取数组最后一个数返回即可。public class Solution { public i...原创 2021-07-25 20:52:32 · 103 阅读 · 0 评论 -
JZ49 把字符串转换成整数
这道题目又让我想起了ACM的时候,当时做基础题目的时候很多这样的题目。这种题目主要是细节还是挺多了。public class Solution { public int StrToInt(String str) { char[] array1 = str.toCharArray(); int[] array = new int[100]; int len = 0; int mark=0; int mark1...原创 2021-07-24 19:15:14 · 79 阅读 · 0 评论 -
JZ44 翻转单词序列
这道题目貌似我在ACM的时候见过,直接正常逻辑写出来就可以了public class Solution { public String ReverseSentence(String str) { char[] str1 = str.toCharArray(); int len = str.length(); if(len==0) return ""; char m = str1[0]; c...原创 2021-07-23 22:56:33 · 76 阅读 · 0 评论 -
JZ26 二叉搜索树与双向链表
这道题目使用二叉树的中序遍历就可以了,保存上以节点和当前节点进行指向。public class Solution { TreeNode head, tep; public TreeNode Convert(TreeNode pRootOfTree) { if(pRootOfTree==null) return null; Convert1(pRootOfTree); return head; } ...原创 2021-07-21 11:19:15 · 66 阅读 · 0 评论 -
JZ38 二叉树的深度 + JZ39 平衡二叉树
JZ38:这两道题目应该放在一起讲*/public class Solution { public int TreeDepth(TreeNode root) { if(root==null)//如果树为空,深度为0 return 0; int a = TreeDepth(root.left);//递归左子树深度 int b = TreeDepth(root.right);//递归右子树深度 i...原创 2021-07-20 09:59:53 · 107 阅读 · 0 评论 -
JZ38 二叉树的深度
这道题目不是很难,是用了递归想,第一次做错主要是由于把根节点有左子树或右子树通过一个计数器加1,左右子树应该分开来计数public class Solution { int deep1 = 0; int deep2 = 0; public int TreeDepth(TreeNode root) { if(root==null) return 0; else{ if(root.le...原创 2021-07-18 17:03:44 · 78 阅读 · 0 评论 -
JZ29 最小的K个数
做这道题目可以先排序,然后再从小到大选出k个数就可以了,不过排序我想用快速排序,感觉效率搞,1)选定一个数为temp,把该数组中小于temp的数放在temp的前面。大于temp的数放在temp的后面2)然后递归就可以了public static int find(int [] input3,int s1,int e1){//确定temp,把小于temp的放在temp的前面,大于temp的放在temp的后面 int temp = input3[s1];//确定一个temp...原创 2021-07-18 11:21:04 · 103 阅读 · 0 评论 -
JZ22 从上往下打印二叉树
这道题目刚开始左的时候我也膜不着头脑,其实是用了队列的思想,先进先出的思想,保存每个节点的值,最后出队列保存每一个元素。import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public ...原创 2021-07-15 00:46:36 · 81 阅读 · 0 评论 -
JZ23 二叉搜索树的后序遍历序列
搜先要明白二叉搜索树(排序树)的一些知识点1)该节点存在左子树节点,左子树节点的值小于该节点的值。2)该节点存在右子树节点,右子树节点的值均大于该节点的值解题思路1)最后一个节点为根节点,以根节点的值为基准,前半部分小于该节点值,后半部分大于该节点的值,从该序列的后面依次进行判断。具体参照https://blog.youkuaiyun.com/qq_43632625/article/details/107751770...原创 2021-07-14 23:58:01 · 87 阅读 · 0 评论 -
JZ21 栈的压入、弹出序列
左这道题目首先要明白栈这一数据结构,后进先出。先用一个栈来保存进栈的数据,再对比出栈的数据import java.util.ArrayList;import java.util.Stack;public class Solution { public boolean IsPopOrder(int [] pushA,int [] popA) { Stack<Integer> S1 = new Stack<Integer>(); ...原创 2021-07-14 01:37:14 · 193 阅读 · 0 评论 -
JZ19 顺时针打印矩阵
这道题目发了我两个小时的时间 ,感觉还是又一点难度的代码如下import java.util.ArrayList;public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { //读取二维数组的行长和列长 int han = matrix.length; int lie = matrix[0].length; in...原创 2021-07-13 17:14:27 · 94 阅读 · 0 评论 -
JZ18 二叉树的镜像
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-07-13 15:10:42 · 84 阅读 · 0 评论 -
JZ16 合并两个排序的链表
做这道题目我并没有使用递归的方法,我只是使用了迭代的方法;思路:1)新建一个节点2)比较两个List的数据大小,使用尾插法插入相关链表的值2)返回该链表的投节点代码如下:public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { if(list1==null){ return list2; } if(li...原创 2021-07-12 14:41:47 · 80 阅读 · 0 评论 -
斐波那契数列题型总结
今天早上刷题目的时候,做了很多这方面的题目,我做的题目都是剑指Offer中的题目,J27直接使用菲波那契数列的公式F(n) = F(n-1)+F(n-2)Jz8的化也使用了以上公式,不过是用了递归的思想,这种题目,找好出口就可以了。像J29这种题目看上去很复杂,但是,多写前面几项就可以了,找其中的规律做题目。像JZ10也是多写几项,找出其规律,然后也发现它也是菲波那契数列题目类型。这道题目掌握链表的结构,基本知识就可以做,最后贴最后一个题目的代码 public ListN...原创 2021-07-11 15:28:24 · 229 阅读 · 0 评论 -
JZ5 用两个栈实现队列
做这个题目先要了解栈这义数据结构栈为先进后出的数据结构,以及它的基本方法addAll()栈之间所有元素的复制如 stack3.addAll(stack2)将栈2的元素复制到栈3removeAllElements()清空栈中的所有元素empty判断栈是否为空解题思路:栈为后进先出队列为先进先出当不考虑在出栈的时候有数据的放入,数据先存入栈1中,然后再从栈1pop出存入栈2中,这样栈2中数据出栈方式就和队列一样了,先进先出,当中途有数据进栈时,还需要先建一个栈,保存栈2中的数原创 2021-07-10 14:29:21 · 88 阅读 · 0 评论 -
JZ4 重建二叉树
今天开始,我也要写博客了,主要是用来复习数据结构!做这道题目首先要了解三个知识点,二叉树的三种遍历方式1)前序遍历先根节点,其次左子节点,后右子节点2)中序遍历先左子节点,其次根节点,后右子节点3)后序遍历先左子节点,其次右子节点,后根节点题目给出前序遍历和后序遍历。要知道前序遍历的第一个数字为根节点的值TreeNode root=new TreeNode(pre[0]);//前序的第一个数定为根下面的代码时判断序列长度是否为1if(len==1){ ...原创 2021-07-09 14:46:41 · 97 阅读 · 0 评论