首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏编码如写诗

    算法

    我扫了一眼代码,心想这挺经典的,来,我给你捋一捋。 ##算法:Word Break 题目理解 题目说给你一个字符串 s 和一个单词列表 wordDict。 这的关键点在于理解动态规划的状态转移。dp[i] 表示前 i 个字符能否拆分,如果某个位置 j 之前能拆分,而且 s[j:i] 是字典里的词,那 dp[i] 就能拆分。

    11510编辑于 2026-03-02
  • 来自专栏编码如写诗

    算法

    我扫了一眼代码,心想这挺经典的,来,我给你捋一捋。 ##算法:House Robber 题目理解 题目说你是专业小偷,计划偷窃沿街的房屋。 这的关键点在于理解动态规划的状态转移。每家有两种选择:偷或不偷。如果偷这一家,上一家就不能偷,所以是dp[i-2]+nums[i]。如果不偷这一家,就是dp[i-1]。取两者最大值就是最优解。

    14710编辑于 2026-03-02
  • 来自专栏编码如写诗

    算法

    我扫了一眼代码,心想这挺经典的,来,我给你捋一捋。 ##算法:Best Time to Buy and Sell Stock 题目理解 题目说给你一个数组 prices,prices[i] 是第 i 天的股票价格。 设计算法计算你能获取的最大利润。 注意不能在买入前卖出,也就是买入日期必须在卖出日期之前。 举例说明: 输入 [7,1,5,3,6,4],输出 5。 这的关键点在于理解一次遍历的思路。我们要找最低的买入价和最高的卖出价,但不能简单找最小值和最大值,因为买入必须在卖出之前。所以要用一次遍历,维护历史最低价,同时计算每次卖出的利润。

    8310编辑于 2026-03-02
  • 来自专栏C 与 Java 数据结构研习志

    算法分享】小白必备的算法基础

    引言:当你作为一个初学Java算法的小白,可以点进来看看我这些算法基础,能够很好的帮助你打好算法基本功。打好基础,才能更上一层楼。速速开始学起这些算法吧!

    34110编辑于 2025-05-28
  • 来自专栏五分钟学算法

    经典算法:排序算法

    序列的变化情况采样如下: 20,15,21,25,47,27,68,35,84 15,20,21,25,35,27,47,68,84 15,20,21,25,27,35,47,68,84 请问采用的是以下哪种排序算法

    1.4K10发布于 2019-10-23
  • 来自专栏MapleYe

    算法】打印算法总结

    前言 本文记录了我对打印算法的总结。先说说什么事打印算法,就是按照一定的规则打印二维矩阵。 10 11 12 15 11 7 3 13 14 15 16 16 12 8 4 接下来,将会有几道打印算法 先旋转最外面的矩阵 1,4,16,13作为1组 2,8,15,9作为1组 3,12,14,5作为1组 把以上分组依次交换位置 左上角右下角往中心移动,重复上面的交换步骤,直至lx >= lx 算法实现 matrix[x][y] + " "); x++; y--; }while(x <= lx && y >= ly); } } 总结 通过以上三道, 例如在第一二道,我们都是通过解决外矩阵后,再解决内矩阵的方式解决问题的。 2、设计一个子模块打印函数 例如给定左上角和右上角打印一个矩阵等打印函数,记住一些常用的打印函数,可以让我们更快地解决问题

    82810发布于 2020-03-28
  • 来自专栏花落的技术专栏

    常见算法

    为了求出岛屿的数量,我们可以扫描整个二维网格。如果一个位置为 11,则以其为起始节点开始进行深度优先搜索。在深度优先搜索的过程中,每个搜索到的 11

    95600编辑于 2021-12-05
  • 来自专栏花落的技术专栏

    常见算法

    为了求出岛屿的数量,我们可以扫描整个二维网格。如果一个位置为 11,则以其为起始节点开始进行深度优先搜索。在深度优先搜索的过程中,每个搜索到的 11

    56130发布于 2021-11-25
  • 来自专栏玩转大前端

    js算法

    面试发现自己的算法知识有不足,因此参考了多篇文章学习总结。 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较 冒泡排序最好的时间复杂度为O(n),是一种稳定排序算法。 快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。 不指定算法的数组排序 let arr = [16, 31, 12, 1, 9, 12, 10]; arr.sort((a, b) => a - b); // 从小到大 4.

    1.5K51编辑于 2022-08-15
  • 来自专栏Java后端开发博客

    LeetCode 算法

    # LeetCode 算法 简单 两数之和 回文数 罗马数字转整数 合并两个有序链表 每天一道,没坚持下去 # 简单 # 两数之和 题目地址 (opens new window) 给定一个整数数组 不在哈希表中,key为8,value为2,存入哈希表中;遍历到元素2,与之对应的元素应该是target-2=6,6在哈希表中;因此6和2就是我们要找的两个元素,对应的下标分别是0,3,将数组[0,3]返回即可,算法到此结束 算法 我们直接将以上递归过程建模,同时需要考虑边界情况。 如果 l1 或者 l2 一开始就是空链表 ,那么没有任何操作需要合并,所以我们只需要返回非空链表。 方法二:迭代 思路 我们可以用迭代的方法来实现上述算法算法 首先,我们设定一个哨兵节点 prehead ,这可以在最后让我们比较容易地返回合并后的链表。我们维护一个 prev 指针,我们需要做的是调整它的 next 指针。

    54110编辑于 2022-12-25
  • 来自专栏chenchenchen

    OJ算法

    #include <stdio.h> #include <string.h> #define MAX 1000 struct Node{     int v,net; }; struct Node node[MAX]; int main(){     int n,e,t,i,x,y,z,head[MAX],que[MAX],map[MAX/2][MAX/2],qh,qt;     while(scanf("%d %d",&n,&e)!=EOF){         memset(head,-1,sizeof(head));         for(i = 0;i < e;i++){             scanf("%d %d",&x,&y);             node[i].v = y;             node[i].net = head[x];             head[x] = i;         }         scanf("%d",&t);         while(t--){             z = 0;             memset(map,0,sizeof(map));             qh = qt = 1;             scanf("%d %d",&x,&y);             if(x == y){                 printf("yes\n");                 continue;             }             que[qt++] = x;             while(qh < qt){                 for(i = head[que[qh]];i != -1;i = node[i].net){                     if(map[que[qh]][node[i].v] == 0){                         map[que[qh]][node[i].v] = 1;                         que[qt++] = node[i].v;                     }                     if(node[i].v == y){                         z = 1;                         break;                     }                 }                 if(z == 1) break;                 qh++;             }             if(z == 1) printf("yes\n");             else printf("no\n");         }         printf("\n");     }     return 0; }

    56530编辑于 2023-01-30
  • 来自专栏酒楼

    算法1

    计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)

    36710编辑于 2023-12-09
  • 来自专栏python3

    算法3

    ---- 摘自传智播客公开课 ---- package test; import java.util.Scanner; public class Arithmetic3 { //

    36710发布于 2020-01-10
  • 来自专栏Java编程指南

    【面试算法】水仙花算法详解

    算法题目 题目:打印出所有的 “水仙花数 “,所谓 “水仙花数 “是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 “水仙花数 “,因为153=1的三次方+5的三次方+3的三次方。 算法分析 根据题目分析,水仙花是三位数是 个位+十位+百位 自身次方等于该数本身,那么计算一个数是否是水仙花数要将这个数的 个位数 十位数 百位数给分解出来伪代码如下: a = i/100; 10; //获取3位数中十位的数 c=i%100%10; //获取3位数中个位的数 这样就可以通过循环来过滤出一个区间的水仙花数量了 算法

    1.1K20发布于 2019-08-02
  • 来自专栏Java学习从基础到就业

    算法】三道理解算法思想——二分查找算法

    二分查找算法 本篇文章中会带大家从零基础到学会利用二分查找的思想解决算法,我从力扣上筛选了三道,难度由浅到深,会附上题目链接以及算法原理和解题代码,希望大家能坚持看完,绝对能有收获 文章顺序: 题目链接=》算法原理=》代码呈现 思想总结: 在某种判断条件下将区间⼀分为⼆,然后舍去其中⼀个区间,然后再另⼀个区间内查找。 需要注意的是二分查找算法不是只可以在有序的的数组中使用,只要一组数据在某个值的前后性质具有单调性都可以使用,也就是具有二段性。 1.二分查找 题目链接: https://leetcode.cn/problems/binary-search/ 算法思路: 。 当我们找到「⼆段性」的时候,就可以尝试⽤「⼆分查找」算法来解决问题。

    28210编辑于 2024-04-08
  • 来自专栏编程小王

    【优选算法篇】leetcode算法

    用最通俗的语言来讲所谓双指针算法是针对于遍历的过程的,我们平常在用for循环遍历的时候都是用单个指针在进行循环访问,而双指针就是用两个相同方向的或者相反方向的指针进行扫描,从而达道算法的目的。 解决思路: 本题巧妙使用双指针算法。 1.初始化两个指针: 。cur: 用于遍历整个数组。 。dest:指向最后一个非零元素,初始化为-1。 2.遍历数组 。

    18800编辑于 2024-11-20
  • 来自专栏zxctscl个人专栏

    算法】二分算法

    搜索插入位置 3.1 分析 利用二分算法的特性,将区间分为两部分,一部分是小于目标值的,那么这个区间就不考虑了;另一部分是等于等于目标值的,如果等于目标值那么就直接返回这个下标,如果大于目标值,那么这个值也是第一个比目标值大的数 二分算法模板 定义两个指针,然后找符合条件的情况按下面的模板走。 填上对应的if表达式,返回题目要求的值即可。 有问题请指出,大家一起进步!!!

    23910编辑于 2024-04-10
  • 来自专栏Lvshen的技术小屋

    算法】用队列解决算法

    ; } System.out.println(list.toString()); } 运行结果: [6, 1, 5, 9, 4, 7, 2, 8, 3] 好了,今天的算法就到这里啦

    34430编辑于 2022-05-05
  • 来自专栏Java学习从基础到就业

    算法】三道理解算法思想--滑动窗口篇

    滑动窗口 本篇文章中会带大家从零基础到学会利用滑动窗口的思想解决算法,我从力扣上筛选了三道,难度由浅到深,会附上题目链接以及算法原理和解题代码,希望大家能坚持看完,绝对能有收获,大家有更好的思路也欢迎大家在评论区交流啊 文章顺序: 题目链接-》算法原理-》代码呈现 思想总结: 滑动窗口可以理解为是快慢双指针的一个分支,也是利用双指针一个在前一个在后,通过判断条件使两个指针形成一个大小不断变化的窗口,不断向前移动 滑动窗口的解题思想是在暴力枚举的思想上演化而来的,利用数据的单调性使快指针不用回退,通常能使算法复杂度在暴力枚举的基础上减少一个数量级。 1.长度最小的子数组 题目链接: https://leetcode.cn/problems/minimum-size-subarray-sum/description/ 算法思想: 由于此问题分析的对象是 「⼀段连续的区间」,因此可以考虑「滑动窗⼝」的思想来解决这道

    30110编辑于 2024-04-08
  • 来自专栏程序员开发工具

    java 算法 - 面试中常见的位操作算法

    前言 上一篇博客 聊一聊 Android 中巧妙的位操作 中,我们讲解了 java 中常用的位运算及常用应用场景,今天,让我们一起来看一下,面试中常见的位操作的算法。 } return A[i]; } ---- 相关推荐 参考博客 在每个数字都出现K次的数组中,找只出现一次的数 相关推荐 聊一聊 Android 中巧妙的位操作 二分查找的相关算法 快速排序的相关算法(java)

    92630发布于 2018-12-28
领券