![](https://img-blog.csdnimg.cn/20210603093956669.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
文章平均质量分 73
数据机构与算法,经典算法题
哈喽喔德
我很懒,还没有简介
展开
-
Leetcode刷题之位运算(Java)
位运算是算法题中比较特殊的一种类型,它们利用二进制位运算的特性进行一些奇妙的优化和计算。常用的位运算符号包括:^ 按位异或& 按位与| 按位或~ 取反<< 左移位>> 右移位力扣例题461. 汉明距离分析:异或运算保留不同的二进制的位,&1取出最后一位,>>向右移位。题解:class Solution { public int hammingDistance(int x, int y) { //将两数进行原创 2022-02-25 11:12:31 · 562 阅读 · 0 评论 -
Leetcode刷题之动态规划(Java)
算法解释可以用局部最优解来推到全局最优解,即动态规划。动态规划在查找有很多重叠子区间问题的最优解时最有效。它将问题重新组合成子问题,为避免多次解决这些子问题,结果都逐渐被计算并保存,从简单的问题直到整个问题都被解决。因此,动态规划保存递归时的结果,因而不会在解决同样的问题时花费时间。要使用动态规划需要满足两个条件:1. 最优子结构,即局部最优解能决定全局最优解;2. 当前状态是前面状态的完美总结,即现状态不会影响前面的状态。解决动态规划问题的关键是找到状态转移方程,这样我们可以通过计算和存储子问题的解原创 2022-02-24 20:28:57 · 1159 阅读 · 0 评论 -
LeetCode刷题之搜索(Java)
一、深度优先搜索基本模型:基于栈的递归void dfs(step){ 判断边界 尝试每一种可能 for(int i=0;i<n;++i) { 继续下一步 dfs(step+1); } 返回}DFS力扣例题695.岛屿的最大面积分析:对是陆地的位置向四个方向进行深度优先搜索,如果下一个位置仍然是陆地,则加上由新陆地向四个方向搜索的值。遍历过的陆地应该设置为0,以避免重复被计入。题解:class Solution { public static i原创 2022-02-08 11:40:08 · 885 阅读 · 0 评论 -
Leetcode刷题之二分查找(Java)
二分查找也常被称为二分法或者折半查找,每次查找通过将待查找区间分成两部分并只取一部分继续查找。二分查找时区间的左右端取开区间还是闭区间在绝大部分时候都考研,但是熟练使用一种写法更好:如左闭右开或者左闭右闭。力扣例题69.Sqrt(x)分析:本题计算算数平方根,因此得数≥0,可以对[0,x]区间使用二分法找到对应值即可。因为小数部分舍去,即向下取整,在结束循环应该取右边的较小的一个边界,由于此时right<left,因此取right。题解:class Solution { publi原创 2022-01-17 19:38:07 · 401 阅读 · 0 评论 -
leetcode刷题之双指针(C++&Java)
(学习参考书:LeetCode101)双指针双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延申多个数组的多个指针。若两个指针指向同一数组,遍历方向相同且不会相交,则称为滑动窗口,常用于区间搜索。若两个指针指向同一个数组,但是遍历方向相反,则可用于进行搜索,被搜索的数组往往是排好序的。力扣例题167.两数之和2-输入有序数组分析:因为数组已经排好序,我们可以采用方向相反的双指针来寻找这两个数字,一个初始执行最小的元素,即数组最左边,向右遍历;一个初始执行最大的元素,即原创 2021-09-14 20:28:14 · 230 阅读 · 0 评论 -
leetcode刷题之贪心算法(C++&Java)
(学习参考书:LeetCode101)贪心算法贪心算法采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到是全局最优的。解题步骤:将问题分解为若干个子问题,寻找合适的贪心策略求解每一个子集的最优解将局部最优解迭代成全局最优解力扣例题455.分发饼干分析:因为饥饿度最小的孩子最容易吃饱,所以优先考虑这个孩子。为了使剩下的饼干尽可能的满足饥饿度更大的孩子,所以应该把大于等于这个孩子饥饿度的且最小的饼干给这个孩子。然后采取同样的策略,直到没有满足的饼干为止。题解:class So原创 2021-08-31 21:09:19 · 272 阅读 · 0 评论 -
列车厢调度(C语言)
题目如下:1 ====== <–移动方向/3 =====\2 ====== -->移动方向有三条平行的列车轨道(1、2、3)以及1-3和2-3两段连接轨道。现有一列车厢停在1号轨道上,请利用两条连接轨道以及3号轨道,将车厢按照要求的顺序转移到2号轨道。规则是:每次转移1节车厢;处在1号轨道的车厢要么经过1-3连接道进入3号轨道(该操作记为"1->3"),要么经过两条连接轨道直接进入2号轨道(该操作记为"1->2");一旦车厢进入2号轨道,就不可以再原创 2021-05-30 17:30:30 · 1959 阅读 · 1 评论