算法
天乔巴夏丶
这个作者很懒,什么都没留下…
展开
-
Leetcode293 滑动窗口的最大值
滑动窗口的最大值 题目描述 来源:https://leetcode-cn.com/problems/sliding-window-maximum/ 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置原创 2020-09-02 14:58:15 · 94 阅读 · 0 评论 -
Java:快速排序的基本实现
快速排序基本思想 基于分治,是对冒泡排序的一种改进。 首先选取一个基准点(pivot),为计算简单,暂且选取数组的第一位为基准点,并将其存储到临时变量中。 事实上,基准点的选取一定程度上影响着快速排序的速率,目前有许多中选取基准点的方案,比如产生随机索引,取前中后的中位数等等。 以该基准点为依据,将数组分为两部分。定义两个指针,其中左指针从左向右扫描,找到比基准大的数,移到右边,右指针从右向左...原创 2020-03-12 17:00:22 · 236 阅读 · 0 评论 -
Java实现冒泡排序及插入排序
冒泡排序 最初版 一趟确定一个最大的数排在了末尾,外层循环控制趟数,内层循环控制次数。 private static void sort(int[] arr) { int count =0; //最后一轮不需要排序 所以到arr.length-2位置的索引即可 for (int i = 0; i < arr.length - 1; i+...原创 2020-03-12 13:08:45 · 238 阅读 · 0 评论 -
Java:归并排序的两种普通实现
不多bb,直接百度百科: 该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列。即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。一般用于总体无序,各子项相对有序的数列。 稳定的排序,即相等的元素顺序不会改变,就是输入他俩啥循序,最终结果他俩还是那顺序。 步骤...原创 2020-03-11 21:14:47 · 143 阅读 · 0 评论 -
【Leetcode】数组题*3
文章目录66.加一题目描述思路分析88.合并两个有序数组题目描述思路分析167.两数之和Ⅱ-输入有序数组题目描述思路分析 66.加一 题目描述 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入...原创 2020-02-23 23:07:04 · 193 阅读 · 0 评论 -
【Leetcode】26,27删除数组重复项
文章目录题目双指针法题26解法题27解法一题27解法二 题目 题目26 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2...原创 2020-02-23 23:05:34 · 161 阅读 · 0 评论 -
【Leetcode】20.有效的括号
文章目录题目思路代码实现复杂度分析 题目 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 思路 运用栈的思想,将左半边的符号压入栈中,只要遇到右半边与之对应的符号,就将其出栈。最终,只要两边完全抵消,就表明括号都是一一对应的,...原创 2020-02-23 23:04:22 · 173 阅读 · 0 评论 -
【Leetcode】14.最长公共前缀
文章目录题目描述水平扫描垂直扫描分治解法二分查找 题目描述 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。(所有输入只包含小写字母 a-z ) 水平扫描 解题思路:将第一个字符串作为暂时的公共前缀,往后遍历,逐渐得到所有字符串的公共前缀。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YnLHUh6v-158246997169...原创 2020-02-23 23:00:46 · 160 阅读 · 0 评论 -
【Leetcode】13.罗马数字转整数
13.罗马数字转整数 题目如下: 解法:来自leetcode的大神DoneSpeak。 package leetcode.pac13; /** * @auther Summerday */ /** * 前值小于后值 总数减去前值 * 前值大于等于后值 总数加上前值 * 最后一个值必然要加上 */ public class Roman { public static v...原创 2020-02-23 22:58:56 · 136 阅读 · 0 评论 -
【Leetcode】9.回文数判断
9.回文数判断 题目: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 解法: //数学解法 public boolean isPalindrome(int x){ System.out.println("****数学解法****"); if(x<0) return false; int num...原创 2020-02-23 22:57:37 · 182 阅读 · 0 评论 -
【Leetcode】7.整数反转
7.整数反转 题目: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 官方解法: class Solution { public int reverse(int x) { int rev =...原创 2020-02-23 22:55:14 · 95 阅读 · 0 评论 -
删除链表元素:哨兵节点
文章目录删除链表元素:哨兵节点83. 删除排序链表中的重复元素Ⅰ题目描述代码实现复杂度分析203.移除链表元素题目描述哨兵节点的利用代码实现复杂度分析82.删除排序链表中的重复元素Ⅱ题目描述代码实现复杂度分析 删除链表元素:哨兵节点 83. 删除排序链表中的重复元素Ⅰ 题目描述 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 这是一道标星为简单的题,难度不是很大。需要注意的几点...原创 2020-01-19 21:58:06 · 280 阅读 · 0 评论 -
707.设计双向链表
文章目录707.设计双向链表链表简介题目描述代码实现 707.设计双向链表 链表简介 链表(LinkedList) 是一种线性表,但不是顺序表,因为它是通过节点直接的相互引用相互联系起来的。 由于不必按顺序存储,链表在插入和删除的时候可以达到O(1)的复杂度,比顺序表快的多。但是查找一个节点或者访问特定编号的节点则需要O(n)的时间。 使用链表结构可以克服数组链表需要预先知道数据大小的缺点,充分...原创 2020-01-16 21:05:23 · 189 阅读 · 0 评论 -
Leetcode动态规划【简单题】
文章目录Leetcode动态规划【简单题】53. 最大子序和题目描述思路分析复杂度分析70.爬楼梯题目描述思路分析复杂度分析121.买卖股票的最佳时机题目描述思路分析复杂度分析303.区域和检索-数组不可变题目描述思路分析复杂度分析 Leetcode动态规划【简单题】 动态规划(Dynamic programming,简称DP),是一种把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规...原创 2020-01-14 20:13:33 · 218 阅读 · 0 评论