首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏算法工程师之路

    每日算法:Day 7

    作者:TeddyZhang,公众号:算法工程师之路 Day 7, 数据结构知识点走起~ 1 编程 【剑指Offer】调整数组顺序使奇数放在偶数之前 输入一个整数数组,实现一个函数来调整该数组中数字的顺序 当然可以,由于题目要求奇数和偶数的相对顺序保持不变,也就是排序的稳定性,而经过我们之前对常用排序算法的了解,知道插入排序是稳定的! int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 pHead=pHead->next; pTail=pTail->next; } return pTail; } }; 2 概念 我们在实现图的创建和遍历算法时,提到了度的概念,对于图中的节点,度数=入度+出度,其中入度是指有多少个节点指向该节点,而出度是指从该节点出发指向了多少个节点!

    64020发布于 2019-08-09
  • 来自专栏C/C++学习

    【优选算法练习】day7

    请必须使用时间复杂度为 O(log n) 的算法。 right = mid - 1; } } return left; } }; 4.运行结果 总结 今天是算法练习的第 7天。

    33820编辑于 2023-10-15
  • 来自专栏技术分享交流

    JavaScript专项算法7):Iterators迭代器

    World'); for (let word of helloWorld) { console.log(word); } // -> should log 'Hello' and 'World' 挑战7 题解: // CHALLENGE 7 function valueAndPrevIndex(array){ const iteratedArray = array[Symbol.iterator](

    45920编辑于 2023-02-16
  • 来自专栏编码如写诗

    算法

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

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

    算法

    我扫了一眼代码,心想这挺经典的,来,我给你捋一捋。 ##算法:House Robber 题目理解 题目说你是专业小偷,计划偷窃沿街的房屋。 偷第1和第3家,1+3=4 输入 [2,7,9,3,1],输出 12。偷第1、3、5家,2+9+1=12 说白了就是:选一些数,这些数不能相邻,要让它们的和最大。 func main() { // 测试用例 fmt.Println(rob([]int{1, 2, 3, 1})) // 4 fmt.Println(rob([]int{2, 7, 这的关键点在于理解动态规划的状态转移。每家有两种选择:偷或不偷。如果偷这一家,上一家就不能偷,所以是dp[i-2]+nums[i]。如果不偷这一家,就是dp[i-1]。取两者最大值就是最优解。

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

    算法

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

    13510编辑于 2026-03-02
  • 来自专栏福大大架构师每日一题

    文心一言 VS chatgpt (9)-- 算法导论2.3 7 3.1 1

    # 七、描述一个运行时间为O(nlgn)的算法,给定n个整数的集合S和另一个整数,该算法能确定 S中是否存在两个其和刚好为工的元素。 文心一言: 这里是一个运行时间为O(nlgn)的算法,可以用来确定集合 S 中是否存在两个元素,它们的和恰好为工。 chatgpt: 一个运行时间为O(nlgn)的算法是先对集合S进行排序,然后使用双指针算法从集合的两端开始向中间扫描。初始化左右指针分别指向S的第一个和最后一个元素。

    26010编辑于 2023-06-08
  • 来自专栏C 与 Java 数据结构研习志

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

    引言:当你作为一个初学Java算法的小白,可以点进来看看我这些算法基础,能够很好的帮助你打好算法基本功。打好基础,才能更上一层楼。速速开始学起这些算法吧! sc.nextLine().replace(" ",""); System.out.println(Integer.valueOf(c)); sc.close(); } } 7: System.out.println((int)(Math.pow(x,6)+3*Math.pow(x,4)-2*Math.pow(x,5)-5*Math.pow(x,2)+6*x+7)

    47110编辑于 2025-05-28
  • 来自专栏MapleYe

    算法】打印算法总结

    前言 本文记录了我对打印算法的总结。先说说什么事打印算法,就是按照一定的规则打印二维矩阵。 2 9 10 11 12 15 11 7 3 13 14 15 16 16 12 8 4 接下来,将会有几道打印算法 例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ========= 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4 例如:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 打印结果为:1,2,3,4,8,12,16,15,14,13,9, 5,6,7,11, 10 【要求】 额外空间复杂度为 例如在第一二道,我们都是通过解决外矩阵后,再解决内矩阵的方式解决问题的。 2、设计一个子模块打印函数 例如给定左上角和右上角打印一个矩阵等打印函数,记住一些常用的打印函数,可以让我们更快地解决问题

    90010发布于 2020-03-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.5K10发布于 2019-10-23
  • 来自专栏福大大架构师每日一题

    文心一言 VS chatgpt (11)-- 算法导论2.3 7 3.1 4~5

    # 四、2 ^ (n+1)=O(2 ^ n)成立吗? 2^(2n)=O(2 ^ n)成立吗? 文心一言: chatgpt: 第一个式子不成立,第二个式子成立。 1. 2 ^ (n+1) = O(2 ^

    30740编辑于 2023-06-09
  • 来自专栏花落的技术专栏

    常见算法

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

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

    js算法

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

    1.7K51编辑于 2022-08-15
  • 来自专栏花落的技术专栏

    常见算法

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

    1K00编辑于 2021-12-05
  • 来自专栏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; }

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

    算法1

    输出描述: 输出该数值的近似整数值 输入:5.5 输出:6 说明:0.5>=0.5,所以5.5需要向上取整为6 输入:2.499 输出:2 说明:0.499<0.5,2.499向下取整为2 7.

    49310编辑于 2023-12-09
  • 来自专栏Java后端开发博客

    LeetCode 算法

    # LeetCode 算法 简单 两数之和 回文数 罗马数字转整数 合并两个有序链表 每天一道,没坚持下去 # 简单 # 两数之和 题目地址 (opens new window) 给定一个整数数组 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 算法 我们直接将以上递归过程建模,同时需要考虑边界情况。 如果 l1 或者 l2 一开始就是空链表 ,那么没有任何操作需要合并,所以我们只需要返回非空链表。 方法二:迭代 思路 我们可以用迭代的方法来实现上述算法算法 首先,我们设定一个哨兵节点 prehead ,这可以在最后让我们比较容易地返回合并后的链表。我们维护一个 prev 指针,我们需要做的是调整它的 next 指针。

    63110编辑于 2022-12-25
  • 来自专栏python3

    算法3

    ---- 摘自传智播客公开课 ---- package test; import java.util.Scanner; public class Arithmetic3 { //设 break; case 6: System.out.println("中老年"); break; case 7:

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

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

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

    1.2K20发布于 2019-08-02
  • 来自专栏明天依旧可好的专栏

    LeetCode组:第7-整数反转

    假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

    36120发布于 2020-04-02
领券