算法
Wangling_blog
这个作者很懒,什么都没留下…
展开
-
每日写题分享--排序链表//归并排序
题目描述:排序链表:自顶向下归并排序、自底向上归并排序原创 2021-12-15 21:39:30 · 1112 阅读 · 12 评论 -
每日写题分享--机器人的运动范围//DFS深度优先搜索/递归
机器人的运动范围//DFS深度优先搜索/递归原创 2021-12-13 17:15:54 · 298 阅读 · 1 评论 -
每日写题分享--矩阵中的路径//回溯/dfs/剪枝
经典矩阵搜索问题;回溯/深度优先搜索/剪枝原创 2021-12-13 16:22:23 · 422 阅读 · 0 评论 -
每日写题分享--搜索旋转排序数组//二分查找
搜索旋转排序数组--双指针原创 2021-12-12 15:19:31 · 162 阅读 · 0 评论 -
每日写题分享--礼物的最大值--动态规划//滚动数组
动态规划原创 2021-12-09 17:59:36 · 589 阅读 · 1 评论 -
每日写题分享--礼物的最大价值--动态规划//滚动数组
动态规划原创 2021-12-09 17:41:55 · 94 阅读 · 0 评论 -
每日写题分享--三个无重叠子数组的最大和//三个滑动窗口的配合
--三个五重叠子数组的最大和--三个滑动窗口配合移动原创 2021-12-09 09:01:19 · 378 阅读 · 0 评论 -
每日写题分享--K次取反后最大化的数组和//动态规划
动态规划解题原创 2021-12-03 22:36:01 · 332 阅读 · 0 评论 -
每日写题分享--最接近的三数之和--双指针
题目描述:给你一个长度为 n 的整数数组nums和 一个目标值target。请你从 nums 中选出三个整数,使它们的和与target最接近。返回这三个数的和。假定每组输入只存在恰好一个解。题目链接戳此解题思路:题目要求最接近目标值的三数之和,可以先给数组排序,这里可以自己写一个排序,会比函数库的排序速度快得多,然后定义两个指针一个在左边界,一个在右边界,用i遍历数组,当i和左右两边的指针指向的数之和小于目标值,由于数组是有序的,可以直接让左边界的指针向右移动,当i和左右两边的...原创 2021-11-27 15:58:31 · 187 阅读 · 0 评论 -
每日写题分享--单词拆分/动态规划/剪枝
题目描述:给你一个字符串 s 和一个字符串列表 wordDict 作为字典,判定s 是否可以由空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。题目链接戳此思路:首先将字典放进set里面,方便判断字典中是否包含某个单词,并求出字典中最长单词的长度(下面解析中有解释)。再根据题意,如果一个字符串合法(即拆分后的单词全都在字典里能查询到),那么这个字符串去掉一个单词也是合法的,由此能得到动态转移方程。具体实现根据下面代码解析:如果在单词长度为 i 时,j 从 i.原创 2021-11-26 16:13:14 · 822 阅读 · 1 评论 -
每日写题分享--最长回文子串--力扣--动态规划
动态规划状态转移方程和初始条件原创 2021-11-25 18:32:22 · 339 阅读 · 0 评论 -
每日写题分享--力扣--可怜的小猪
题目描述:有 buckets 桶液体,其中 正好 有一桶含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否会死进行判断。不幸的是,你只有minutesToTest 分钟时间来确定哪桶液体是有毒的。喂猪的规则如下:选择若干活猪进行喂养可以允许小猪同时饮用任意数量的桶中的水,并且该过程不需要时间。小猪喝完水后,必须有 minutesToDie 分钟的冷却时间。在这段时间里,你只能观察,而不允许继续喂猪。过了 minutesToDie.原创 2021-11-25 15:23:46 · 128 阅读 · 0 评论 -
每日写题分享--菲波那切数列--递归/迭代/动态规划/剪枝
题目描述:题目链接戳此思路:方法一:迭代只要计算出要求的那一项的前一项和前前项的和就是那一项的菲波那切数列。定义first为第一项,second为第二项,fib为前两项的和即第三项。此后三项一起向后走,就可以求出第n项。代码实现如下:public class Solution { public int Fibonacci(int n) { int first = 1; int second = 1; int fib = .原创 2021-11-24 14:36:21 · 480 阅读 · 0 评论 -
每日写题分享--牛客--链表中倒数第K个节点--双指针
题目描述:输入一个长度为 n 的链表,设链表中的元素的值为 ai,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。题目链接戳此思路:定义两个指针,先让快指针走k步,然后快慢指针以一样的速度一起走,这样快慢指针之间的距离始终为k,等快指针走到空的时候,慢指针指向的就是倒数第k个节点。代码实现如下:public class Solution { public ListNode FindKthToTail (ListNode pHead, int.原创 2021-11-24 14:17:19 · 382 阅读 · 0 评论 -
每日习题分享--LeetCode209.长度最小的子数组--滑动窗口、前缀和
题目描述:给定一个含有n个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。题目链接思路:采用滑动窗口思想,定义一个指针j记录子数组的开始下标,用 i 遍历数组,定义sum记录下子数组的前缀和,再用minLen记录下子数组出现过最小的长度。只要sum大于目标值,sum减去子数组的开始下标的数值...原创 2021-11-23 19:05:28 · 232 阅读 · 0 评论 -
每日写题分享--牛客--NC77 调整数组顺序使奇数位于偶数前面(一)--类似于插入排序。
每日写题分享--牛客--NC77 调整数组顺序使奇数位于偶数前面(一)--类似于插入排序原创 2021-11-22 16:50:14 · 417 阅读 · 0 评论 -
每日写题分享--牛客--旋转数组的最小数字--双指针
题目链接:旋转数组的最小数字题目描述:有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。数据范围:1≤n≤100001 \le n \le 100001≤n≤10000,数组中任意元素的值:0≤val≤100000 \le val \le 100000≤val≤10000要求:空间复杂.原创 2021-11-22 16:07:01 · 488 阅读 · 1 评论 -
每日写题分享--Leetcode384.打乱数组\\洗牌算法
题目描述:给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。实现 Solution class:Solution(int[] nums) 使用整数数组 nums 初始化对象int[] reset() 重设数组到它的初始状态并返回int[] shuffle() 返回数组随机打乱后的结果题目链接:打乱数组思路:第一个是构造函数,本题不仅仅考查洗牌算法,也考察对基础知识的掌握情况,首先要有两个成员变量,即两个数组,说通俗点就是一个用来给后面函数打乱用的,一个用来保存原始数原创 2021-11-22 14:50:08 · 356 阅读 · 0 评论