随笔分类 - 数据结构与算法
数据结构和算法题解法
摘要:在面试中遇到了这道题:如何实现多个升序链表的合并。这是 LeetCode 上的一道原题,题目具体如下: 用归并实现合并 K 个升序链表 LeetCode 23. 合并K个升序链表 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:
阅读全文
摘要:一、插入类排序 插入类排序就是在一个有序的序列中,插入一个新的关键字。从而达到新的有序序列。插入排序一般有直接插入排序、折半插入排序和希尔排序。 1. 插入排序 1.1 直接插入排序 /** * 直接比较,将大元素向后移来移动数组 */ public static void InsertSort(i
阅读全文
摘要:一、递归方法 递归比较简单,直接上代码: ### 1.1 先序遍历 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * T
阅读全文
摘要:一、栈 1. 栈的基本概念 栈(Stack):是限定仅在一端(栈顶)进行插入或者删除操作的线性表,是一种后进先出的线性表 栈顶(Top):允许进行插入或删除操作的一端 栈底(Bottom):固定的,不允许进行任何操作的一端 2.栈的存储结构 顺序存储(数组实现) 在JDK中,Java Stack
阅读全文
摘要:1. 求栈中的最小值 1.1 题目介绍 请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。 示例: MinStack minStack = new MinStack(); minStack
阅读全文
摘要:给定一个整数数组 ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: **输入:** [-2,1,-3,4,-1,2,1,-5,4], **输出:** 6 **解释:** 连续子数组 [4,-1,2,1] 的和最大,为 6。 方法一:暴力法 public int Ma
阅读全文
摘要:第一步:明确题目的意思 第二步:列出所有可能的解法,寻找最优解 第三步:实操,写代码,并优化 第四步:反馈并测试解法 提醒:要理解代码的思路后再开始背写,而不是一边看题解,一边敲代码。这不是程序员,这是打字员!
阅读全文