
数据结构
临地
天天向上
展开
-
leetcode 28 :strStr
class Solution { public int strStr(String haystack, String needle) { if(needle == null || needle.length() <= 0){ return 0; } int hlen = haystack.length(); int nlen = needle.length(); if(hlen < .原创 2020-05-28 18:27:52 · 112 阅读 · 0 评论 -
包含min函数的栈(O(1)实现)
import java.util.Stack;public class Solution { private Stack<Integer> myStack=new Stack(); private Stack<Integer> minStack=new Stack(); private int min; public void pus...原创 2018-11-20 22:25:07 · 200 阅读 · 0 评论 -
树的子结构 - 牛客网剑指offer
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 注意:一般遍历树都会采用递归,递归的边界问题比较容易处理;public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { if(root2==null|...原创 2018-07-21 00:25:34 · 153 阅读 · 0 评论 -
合并两个排序的链表 - 牛客剑指offer
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。注意链表是引用,返回的是头指针就好了;/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public...原创 2018-07-11 23:12:15 · 165 阅读 · 0 评论 -
反转链表 - 牛客剑指offer(n)
题目描述输入一个链表,反转链表后,输出新链表的表头。思路:这道题只需要解决:保持head持续往下的同时,记录head的前一个节点;所以用一个pre存储前一个节点,next存储下一个节点,画个图就很容易理解;public class Solution { public ListNode ReverseList(ListNode head) { if(head==null) ...原创 2018-07-10 23:27:07 · 174 阅读 · 0 评论 -
链表中倒数第k个结点 - 牛客剑指offer 13
题目描述输入一个链表,输出该链表中倒数第k个结点。思路:这道题应该注意边界问题,解决的话其实很简单。但是考察的是鲁棒性,这方面没有研究...但是感觉自己写的问题应该不大吧;首先定义两个node,a和b,a一开始遍历,直到a遍历到k-1个节点,b开始遍历;也就是说a比b领先k-1个点;所以当a到了末尾的时候,b就是倒数第k个点;/*public class ListNode { int v...原创 2018-07-09 23:48:24 · 153 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面 - 牛客剑指offer 12
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。第一种思路:每次暴力寻找,然后暴力区间往后挪一位;public class Solution { public void reOrderArray(int [] array) { int len=...原创 2018-07-08 22:57:47 · 135 阅读 · 0 评论 -
HDU -1001 Exponentiation(Java)
ExponentiationTime Limit: 1000/500 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2798 Accepted Submission(s): 761 Problem DescriptionProblems involving the computatio...原创 2018-07-03 20:29:44 · 222 阅读 · 0 评论 -
用两个栈实现队列 - 牛客剑指offer5
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:用栈 1 存储队列,利用栈 2 取出 栈底元素,然后把其他元素重新装进栈 1;import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); ...原创 2018-07-02 22:43:29 · 152 阅读 · 0 评论 -
重建二叉树-牛客剑指offer4
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:二叉树生成问题,习惯采取递归解决;首先前序遍历是先遍历根节点,然后左子树,然后右子树;中序遍历是先遍历左子树,然后父节点,然后右子树;那么,由中序遍历...原创 2018-07-02 00:19:49 · 235 阅读 · 0 评论 -
矩阵压缩存储(对称矩阵与压缩矩阵)
1. 对称矩阵采用一维数组进行存储,例如test[3][3]={ { 1 , 2 , 3 } , { 2 , 1 , 3 } , { 3 , 3 , 1 } }存进 ans [ ] 里面;for(int i=0;i<3;i++)for(int j=0;j<3;j++)ans[ len++ ]=test[ i ] [ j ];解压缩则反转:例如 test [ i ] [ j ]=len ...原创 2018-06-30 22:40:55 · 2842 阅读 · 0 评论 -
从尾到头打印链表 - 牛客剑指Offer3
题目:输入一个链表,从尾到头打印链表每个节点的值。并且给出了链表类:/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/思路...原创 2018-06-30 22:04:34 · 144 阅读 · 0 评论 -
线性结构的判断 --数据结构
一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件,则称为线性结构,在数据结构中习惯称为线性表。(咳咳)...原创 2018-06-26 23:24:51 · 7422 阅读 · 0 评论