数据结构和算法
数据结构讲解和算法实现以及题解
码农阳神
Diligence is like the seedling that springs up in spring, but it does not increase and grows day by day.
展开
-
力扣-矩阵中的幻方
矩阵中的幻方3 x 3 的幻方是一个填充有从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。给定一个由整数组成的 grid,其中有多少个 3 × 3 的 “幻方” 子矩阵?(每个子矩阵都是连续的)。输入: [[4,3,8,4], [9,5,1,9], [2,7,6,2]]输出: 1解释: 下面的子矩阵是一个 3 x ...原创 2020-05-04 09:54:08 · 288 阅读 · 0 评论 -
力扣-非递减数列
非递减数列给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),总满足 array[i] <= array[i + 1]。输入: nums = [4,2,3]输出: true解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。...转载 2020-05-04 09:21:34 · 215 阅读 · 0 评论 -
力扣-1010. 总持续时间可被 60 整除的歌曲
总持续时间可被 60 整除的歌曲在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 i 和 j 满足 i < j 且有 (time[i] + time[j]) % 60 == 0。输入:[30,20,150,100,40]输出:3解释:这三对的总持续时间可被 60 整数:(tim...原创 2020-05-04 08:44:36 · 221 阅读 · 0 评论 -
牛客剑指Offer7
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39题解:1.分析 斐波那契数列的标准公式为:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)根据公式可以直接写出:代码如下:public class Solution { public int Fibona...原创 2020-02-18 14:33:25 · 103 阅读 · 0 评论 -
牛客剑指Offer
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题解:import java.util.ArrayList;public class Solution {...原创 2020-02-17 13:34:38 · 211 阅读 · 0 评论 -
牛客剑指Offer5
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。题解分析:队列的特性是:“先入先出”,栈的特性是:“先入后出”当我们向模拟的队列插入数 a,b,c 时,假设插入的是 stack1,此时的栈情况为:栈 stack1:{a,b,c}栈 stack2:{}当需要弹出一个数,根据队列的"先进先出"原则,a 先进入,则 a 应该先弹出。但是此时 a...原创 2020-02-16 16:26:48 · 240 阅读 · 0 评论 -
牛客剑指Offer4
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。题解:分析根据中序遍历和前序遍历可以确定二叉树,具体过程为:根据前序序列第一个结点确定根结点根据根结点在中序序列中的位置分割出左右两个子序列对...原创 2020-02-15 09:30:26 · 93 阅读 · 0 评论 -
牛客剑指Offer3
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。题解:1.分析 listNode 是链表,只能从头遍历到尾,但是输出却要求从尾到头,这是典型的"先进后出",我们可以想到栈!ArrayList 中有个方法是 add(index,value),可以指定 index 位置插入 value 值所以我们在遍历 listNode 的同时将每个遇到的值插入到 list 的 0 位置...原创 2020-02-14 15:55:45 · 132 阅读 · 0 评论 -
牛客剑指Offer2
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。题解:1. 调用自带函数**分析:**用Java自带的函数str.toString().replace(" “,”%20")。代码:public class Solution { public String rep...原创 2020-02-13 19:43:15 · 140 阅读 · 0 评论 -
牛客剑指Offer1
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。题解:一、暴力法分析: 就是不断去遍历数组的每个元素。代码如下:public class Solution { public boolean Find(int target, in...原创 2020-02-12 19:41:25 · 144 阅读 · 0 评论 -
链表详解自带代码
单链表中的每个结点不仅包含值,还包含链接到下一个结点的引用字段。通过这种方式,单链表将所有结点按顺序组织起来。下面就是单链表例子:举个简单例子:链表就跟铁链一样与数组不同,我们无法在常量时间内访问单链表中的随机元素。 如果我们想要获得第 i 个元素,我们必须从头结点逐个遍历。 我们按索引来访问元素平均要花费 O(N) 时间,其中 N 是链表的长度。众所周知,我们使用头结点来代表整个列表。...原创 2019-12-24 13:44:09 · 248 阅读 · 0 评论 -
数据结构清华大学出版社顺序表(严蔚敏)(第一次写这个不喜勿喷也是刚入门的小白,希望大佬可以指点一下)
#include <iostream>#include <stdio.h>#include <stdlib.h> #include <cstdlib>#define LIST_INIT_SIZE 100 //线性表存储空间的初始量分配#define LISTINCREMENT 10 //线性表存储空间的分配量#define OK 1#d...原创 2019-04-11 12:54:16 · 670 阅读 · 2 评论 -
数据结构清华大学出版社三元组(严蔚敏)(第一次写这个不喜勿喷也是刚入门的小白,希望大佬可以指点一下)
数据结构清华大学出版社三元组(严蔚敏)(第一次写这个不喜勿喷也是刚入门的小白,希望大佬可以指点一下)#include <stdlib.h>#include <stdio.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#define INFEASIBLE...原创 2019-04-11 12:53:05 · 424 阅读 · 0 评论