算法专栏
本专栏主要是一些算法的学习,通过一些经典的题目来学习算法
Word码鸭
乐观和爱才是生活的解药
展开
-
使用单调栈解题
何为单调栈?栈中元素从栈顶到栈底,要么单调递增排列,要么单调递减排列。如单调递增栈就是从栈顶到栈底的元素值依次增大,下面是几个单调栈的应用。目录1.力扣第496题—下一个更大元素2. 力扣第503题—下一个更大元素II(循环数组)3.力扣第42题——接雨水 4.力扣第456题——132模式下一个更大元素 I这个问题我们实际上只需要观察 nums2 即可,我们倒着从 nums2 的最后一个元素开始,找到 nums2 中的每个元素的下一个最大元素。在遍历的时候,维护一个单调递增的栈,当栈为空时返回-1,表明当前原创 2022-06-21 19:20:00 · 355 阅读 · 7 评论 -
【基础算法题】数组中出现次数超过一半的数字
数组中出现次数超过一半的数字_牛客题霸_牛客网 (nowcoder.com)方法1将数组排序,数组长度的一半的位置一定就是我们要找的数,但是这种方法效率是比较低的代码实现: public int MoreThanHalfNum_Solution(int [] array) { Arrays.sort(array); return array[array.length/2];}方法2使用 map 存储数字及每个字符出原创 2022-04-18 17:35:57 · 192 阅读 · 0 评论 -
【基础算法题】替换空格
题目要求:将一个字符串中的每个空格替换成“%20”。示例:输入:s = "We are happy."输出:"We%20are%20happy."方法一调用String类中的 replaceAll 方法,将所有空格替换成 %20 public String replaceSpace(String s) { String res = s.replaceAll(" ","%20"); return res; }方法二从空格变成 %原创 2022-04-15 19:15:50 · 179 阅读 · 0 评论 -
【基础算法题】调整数组顺序使奇数位于偶数前面
1.不要求相对位置2.要求相对位置这里我们可以使用索引 left 指向数组第一个元素,right指向数组最后一个元素,left 向后走,遇到偶数就和 right 交换代码实现:public class Offer21_oddeven { public int[] exchange(int[] nu.原创 2022-04-13 17:43:44 · 571 阅读 · 0 评论 -
【基础算法题】旋转数组中的最小数字
旋转数组的最小数字_牛客题霸_牛客网 (nowcoder.com)题目要求:有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。示例:输入:[3,4,5,1,2]返回:1这道题我们可以遍历数组挨个查找最小元素,也可以调用JDK中Arrays的sort方法将数组排序,输出第一个元素,但是这原创 2022-04-11 19:32:28 · 695 阅读 · 5 评论 -
【基础算法题】杨氏矩阵(二维数组)的查找
题目要求:在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。二维数组中的查找_牛客题霸_牛客网 (nowcoder.com)首先我们先了解一下二维数组arr的长度的表示:arr.length //表示一共有多少行arr[ i ].length //表示第 i 行一共有多少列分析:这一题,我们要明白查找的过程,本质就是排除的过程。根..原创 2022-04-04 21:38:08 · 664 阅读 · 5 评论