首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏该溜子的专栏

    算法】每日一——奇怪的算法2

    一:螺旋矩阵 心得 1:同学可以移步本文螺旋矩阵2,看看操作思路 class Solution { public List<Integer> spiralOrder(int[][] matrix } if(++l > r) break; } return list; } } 二:合并区间 心得: 1:这道第一个关键点在于 ,按照左端点进行升序排序(这里用到了lambda表达式,实现comparator接口) 2:处理是否能合并区间这一点很关键,比较的是集合中最后一个元素的右端点和待放入元素的左端点大小,一旦重合,就可合并女少 ~ 3:算法方法技巧.get()方法传入下标值,不太熟 class Solution { public int[][] merge(int[][] intervals) { Arrays.sort 2; int[] array = new int[2*n]; array[1] = 1; array[2] = 2; for(int

    23000编辑于 2025-02-18
  • 来自专栏深入理解Android

    算法2)—— 两数相加

    输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 分析:看到结果是逆序输出的,刚开始思路是将两个链表先逆序过来,但这样太麻烦了 =0的判断,测试用例[5] [5] 2.是判空问题, l1 = l1!=null&&l1.next!=null? =null||l2!=null||sub!=0){ int one = l1==null?0:l1.val; int two = l2==null? l1.next:null; l2 = l2!=null&&l2.next!=null? l2.next:null; } return beginNode.next; } }

    36620编辑于 2022-06-22
  • 来自专栏C/C++学习

    【优选算法练习】day2

    2.解题思路 3.代码 class Solution { public: int maxArea(vector<int>& height) { int left = 0, right 2.解题思路 3.代码 class Solution { public: int triangleNumber(vector<int>& nums) { int ret = 0; //1.排序 sort(nums.begin(), nums.end(), [](int& x, int& y){return x < y;}); //2. return {nums[left], nums[right]}; } } return {}; } }; 4.运行结果 总结 今天是算法练习的第 2天。

    31620编辑于 2023-10-15
  • 来自专栏渔夫

    算法-1比特与2比特字符

    示例 2: 输入: bits = [1, 1, 1, 0] 输出: False 解释: 唯一的编码方式是两比特字符和两比特字符。所以最后一个字符不是一比特字符。 true; } else { boolean temp; int count = 0; int position = bits.length - 2; while (position >= 0)&& bits[position--] == 1) { count++; } if (count % 2 } else { return false; } } } } 解答题目关键要点: 1.其结果只和最后一位0前面连续0的个数的奇偶有关 2. 在编码的时候出现了许多次数组越界的警告,其中要点是: 1)对于索引必须>=0的判断一定要有 2)position >= 0)&& bits[position–] == 1与 bits[position

    55920发布于 2019-07-31
  • 来自专栏算法channel

    爆料算法日记 Day1;布置 Day2 算法

    大家晚上好,错过昨天的算法作业帖的朋友,可点击下面查看: 算法起航,帮你走向下一个巅峰! ])) 完全有序 print(bubble_sort([1,2,3,4,5,6,7,8,9])) 更多星球中其他人的提交,也能很方便的看到,就像一个班级的朋友圈,非常有营养。 ,提升算法的分析和应用能力。 Day 2 算法:写出选择排序 参考下面的几幅图,红色表示当前找到的未排序序列中的最小值,绿色表示当前被比较的元素: 又找到一个更小的值2,重新标记它为红色: 一轮比较后,找到最小值2并标记为黄色,表示就位 通过这两道基本的算法练习题,找到一些做算法的感觉。明天Day3 开始系统学习算法知识,从什么是一个算法开始。

    68340发布于 2020-05-26
  • 来自专栏技术分享交流

    JavaScript专项算法2):函数式编程

    问题: 构建一个addTwo函数,作用为接受一个参数并将参数加2。 map([1,2,3,4,5], multiplyByTwo); //-> [2,4,6,8,10] multiplyByTwo(1); //-> 2 multiplyByTwo(2); //-> 4 i =0; i<array1.length; i++){ if(callback(array1[i])===array2[i]){ matchObj[array1[i]] = array2[i]; 题解: // Challenge 11 const commutative = (func1, func2, value) => { if(func1(func2(value)) === func2(func1 => n / 2; console.log(objFilter(startingObj, half)); // should log: { 2: 1, 6: 3 } 挑战13 rating 问题: 构建

    47730编辑于 2023-02-14
  • 来自专栏心源易码

    TypeScript算法实战——剑指 Offer篇(2

    本系列将使用TypeScript实战算法,题目全部来源于力扣题库:《剑指 Offer(第 2 版)》,本章节包括的题目有:题目难度I. ,n=2时输出1*1=1,n=3时输出1*2=2,n=4时输出2*2=4,n=5时输出2*3=6,n=6时输出2*2*2=8,n=7时输出2*2*3=12,n=8时输出2*3*3=18,n=8时输出3* 3*3=27… ,可以由数学知识推得大于4的值都要拆,拆出来的乘积会比本身要大;拆成3*3要比拆成2*2*2要好,也就是说尽量多拆成3;所有数都可以拆成若干3和若干2。 = p[j-2] && p[j-2] ! 示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。

    31710编辑于 2024-08-14
  • 来自专栏福大大架构师每日一题

    deepseek VS chatgpt (402)-- 算法导论25.3 2

    这样做是为了确保后续可以安全地应用Dijkstra算法(它不支持负权重的边)来寻找最短路径。 2. 2) g.addEdge(1, 2, 3) g.addEdge(2, 3, 1) // 运行 Johnson 算法 dist, ok := g.johnson() Johnson 算法分为两个主要部分: 1. 使用 Bellman-Ford 算法计算从单一源点(通常选择图中一个虚拟的源点)到所有其他顶点的最短路径。 2. 检测负权重环:通过 Bellman-Ford 算法,可以检测图中是否存在负权重环。如果存在负权重环,则 Johnson 算法无法继续进行。 2. 2. 使用Bellman-Ford算法计算从顶点s到其他所有顶点v的最短路径权重h(v)。如果存在负权重环,则算法终止。 3.

    30710编辑于 2025-02-19
  • 来自专栏Linux云计算网络

    算法导论2-9章补充几道

    1、习题2-4,求逆序对,时间复杂度要求Θ(nlgn) 定义:对于一个有n个不同的数组A, 当i<j时,存在A[i]>A[j],则称对偶(i, j)为A的一个逆序对。 譬如:<2,3,8,6,1>有5个逆序对。 习题9.3-7,设计一个O(n)时间的算法,对于一个给定的包含n个互异元素的集合S和一个正整数 k<=n,该算法能够确定S中最接近中位数的k个元素。 请设计一个O(lgn)时间的算法来找出数组X 和Y中所有2n个元素的中位数。 譬如:X:<1,2,3,4,7,9>; Y:<2,5,6,7,10,11>; 中位数为数组Y中的6. 2)两个数组有2n个元素,则中位数位于n index,小于中位数的元素个数为n-1; 3)如果当前找到中位数在数组X中的标号为 K,则在数组Y的标号为:n-K-2 < index <= n-K-1; 4

    83550发布于 2018-01-11
  • 来自专栏cwl_Java

    C++经典算法-2(2N+1) 魔方阵

    51.Algorithm Gossip: 2(2N+1) 魔方阵 说明 方阵的维度整体来看是偶数,但是其实是一个奇数乘以一个偶数,例如6X6,其中6=2X3,我们也称这种方阵与单偶数方阵。 解法 如果您会解奇数魔术方阵,要解这种方阵也就不难理解,首先我们令n=2(2m+1),并将整个方阵看作是数个奇数方阵的组合,如下所示: ? ], int); int main(void) { int square[N][N] = {0}; int i, j; magic_o(square, N/2) = 0; j < m1; j++) // 处理规则 2 SWAP(x[i][n-1-j], x[n/2+i][n-1-j]); } else { // 处理规则 3 SWAP(x[m][n-1-j], x[n/2+m][n-1-j]); } } }

    68110发布于 2020-02-13
  • 来自专栏编码如写诗

    算法

    我扫了一眼代码,心想这挺经典的,来,我给你捋一捋。 ##算法:Word Break 题目理解 题目说给你一个字符串 s 和一个单词列表 wordDict。 2^n种拆分方式,每段检查O(1)(用哈希表),时间复杂度 O(2^n)。n=100时直接爆。 优化思路 - 动态规划:用 dp[i] 表示 s[0:i] 能否被拆分。 这的关键点在于理解动态规划的状态转移。dp[i] 表示前 i 个字符能否拆分,如果某个位置 j 之前能拆分,而且 s[j:i] 是字典里的词,那 dp[i] 就能拆分。

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

    算法

    我扫了一眼代码,心想这挺经典的,来,我给你捋一捋。 ##算法:House Robber 题目理解 题目说你是专业小偷,计划偷窃沿街的房屋。 举例说明: 输入 [1,2,3,1],输出 4。偷第1和第3家,1+3=4 输入 [2,7,9,3,1],输出 12。 ); i++ { // 当前选择:要么偷这家(prev2+nums[i]),要么不偷这家(prev1) current := max(prev1, prev2+nums[i]) prev2 prev2对应dp[i-2],prev1对应dp[i-1]。 状态转移:dp[i] = max(dp[i-1], dp[i-2] + nums[i])。 这就是为什么状态转移要考虑i-2而不是i-1。 Go函数名:函数名叫rob,不是robHouse,面试时要注意函数名的规范。 这的关键点在于理解动态规划的状态转移。每家有两种选择:偷或不偷。

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

    算法

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

    13310编辑于 2026-03-02
  • 来自专栏IT界的泥石流

    算法(2):返回滑动窗口最大值

    3 -1 [-3 5 3] 6 7 5 1 3 -1 -3 [5 3 6] 7 6 1 3 -1 -3 5 [3 6 7] 7 解法2: 如果队列为空,则当前数字入队列 2. 如果当前数字大于队列尾,则删除队列尾,直到当前数字小于等于队列尾,或者队列空,然后当前数字入队列 3. 如果当前数字小于队列尾,则当前数字入队列 4. (i >= k-1) res[i+1-k] = nums[q.peekFirst()]; } return res; }}好了,今天的算法到此为止讲述完毕 IT界的泥石流带你一同刷!一同进步!一同成长! IT界的泥石流与你一同成长长按二维码关注我们

    87810发布于 2019-07-16
  • 来自专栏C 与 Java 数据结构研习志

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

    引言:当你作为一个初学Java算法的小白,可以点进来看看我这些算法基础,能够很好的帮助你打好算法基本功。打好基础,才能更上一层楼。速速开始学起这些算法吧! 1:输入宽度 代码详解: package demo5_2; import java.util.Scanner; /** * Created with IntelliJ IDEA. 详解代码 package demo5_2; import java.util.Scanner; /** * Created with IntelliJ IDEA. 3:%f格式符 输入一个实数,第一次按实型输出;第二次保留2位小数输出;第三次保留3位小数但最小列宽8列输出,空格分隔。 代码详解: package demo5_2; /** * Created with IntelliJ IDEA.

    47010编辑于 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.5K10发布于 2019-10-23
  • 来自专栏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、设计一个子模块打印函数 例如给定左上角和右上角打印一个矩阵等打印函数,记住一些常用的打印函数,可以让我们更快地解决问题

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

    常见算法

    ver2 = version2.split('. ') # 用int可以去除前导零 len1 = len(ver1) len2 = len(ver2) if len1 > len2: ver2.extend(['0'] * (len1 - len2)) if len2 > len1: ver1.extend(['0'] * (len2 - len1 )) for i in range(max(len1, len2)): if int(ver1[i]) > int(ver2[i]): == 1) return 0; // 此时没有方案 int bagSize = (S + sum) / 2; vector<int> dp(bagSize + 1, 0)

    1K00编辑于 2021-12-05
  • 来自专栏玩转大前端

    js算法

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

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

    常见算法

    ver2 = version2.split('. ') # 用int可以去除前导零 len1 = len(ver1) len2 = len(ver2) if len1 > len2: ver2.extend(['0'] * (len1 - len2)) if len2 > len1: ver1.extend(['0'] * (len2 - len1 )) for i in range(max(len1, len2)): if int(ver1[i]) > int(ver2[i]): == 1) return 0; // 此时没有方案 int bagSize = (S + sum) / 2; vector<int> dp(bagSize + 1, 0)

    64930发布于 2021-11-25
领券