随笔分类 - 算法
摘要:public bool CanJump(int[] nums) { int rightMost=0; int n=nums.Length; for(int i=0;i<n;i++) { if(i<=rightMost) { rightMost = Math.Max(rightMost,i+nums[
阅读全文
摘要:public static int MaxProfit(int[] prices) { int priceSize = prices.Length; int [,] dp=new int[priceSize,2];//同一天有两种状态, [i,0]为第i天没有股票的利润,[i,1]为i天持有股票的利
阅读全文
摘要:原文链接:https://blog.csdn.net/changyuanchn/article/details/51476281 引言据说有人归纳了计算机的五大常用算法,它们是贪婪算法,动态规划算法,分治算法,回溯算法以及分支限界算法。虽然不知道为何要将这五个算法归为最常用的算法,但是毫无疑问,这五
阅读全文
摘要:原文链接:https://blog.csdn.net/u013309870/article/details/75193592 http://t.csdnimg.cn/GgRFt 动态规划算法的核心 理解一个算法就要理解一个算法的核心,动态规划算法的核心是下面的一个小故事。 A * "1+1+1+1+
阅读全文
摘要:public void Rotate(int[] nums, int k) { int n=nums.Length; int[] newNums=new int[n]; for(int i=0;i<n;i++) { newNums[(i + k) % n] = nums[i]; } for (int
阅读全文
摘要:public int MajorityElement(int[] nums) { Dictionary<int, int> dic = new Dictionary<int ,int>(); foreach (int num in nums) { if(!dic.ContainsKey(num))
阅读全文
摘要:非严格递增排列 的数组 nums,意思是有序递增的,但是有相同的元素 我写的: public int RemoveDuplicates(int[] nums) { int length=nums.Length; int low=0; for(int i=0;i<length;i++) { int n
阅读全文
摘要:数组移除数据,需要循环覆盖的方法。 可以快慢双指针。循环一遍。 public int RemoveElement(int[] nums, int val) { int n=nums.Length; int low=0; for(int i=0;i<n;i++) { if(nums[i]!=val)
阅读全文
摘要:我写的: public int VowelStrings(string[] words, int left, int right) { string s="aeiou"; int k=0; for(int i=left;i<=right;i++) { int x=0,y=0; string word
阅读全文
摘要:转置让我写成了对角线交换。。。 还是要记录下 对角线交换代码: public int[][] Transpose(int[][] matrix) { int temp=0; int m = matrix.Length, n = matrix[0].Length; for(int i=0;i<m;i+
阅读全文
摘要:给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。 请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列,返回重排后的数组。 我写的: public int[] Shuffle(int[] nums, in
阅读全文
摘要:写了老半天,还是电脑写的更简单,原来split还可以这么用(可以为数组),学到了。记录下 //我写的 public static string RetrieveSpanTimeByTime(string firstTime, string endTime) { int firstDayIndex =
阅读全文
摘要:学到了一种,将时常全都转换为分钟,利用分钟进行相加减,再将分钟转换为时长 其中,1天时长是1440分钟
阅读全文
摘要:public bool IsUgly(int n) { if(n<=0) { return false; } int [] nums=[2,3,5]; foreach( int i in nums) { while(n%i==0) { n/=i; } } // if(n==1) // { // re
阅读全文
摘要:个数 n 是 222 的幂,当且仅当 nnn 是正整数,并且 nnn 的二进制表示中仅包含 111 个 111。 因此我们可以考虑使用位运算,将 n 的二进制表示中最低位的那个 1 提取出来,再判断剩余的数值是否为 000 即可。下面介绍两种常见的与「二进制表示中最低位」相关的位运算技巧。 第一个技
阅读全文
摘要:原文链接:https://blog.csdn.net/lsgo_myp/article/details/91435589 Prim算法 加点法 1.算法简单描述 1).输入:一个加权连通图,其中顶点集合为V,边集合为E; 2).初始化:Vnew = {x},其中x为集合V中的任一节点(起始点),En
阅读全文
摘要:原文链接:https://blog.csdn.net/xiaoxi_hahaha/article/details/110257368 https://blog.csdn.net/qq_25954259/article/details/78289335/ 原文链接:https://blog.csdn.
阅读全文
摘要:原文链接:https://blog.csdn.net/MfuuJava/article/details/132933517 拓扑排序是一种在有向无环图(DAG)中对节点进行排序的算法。 在 C# 中,我们可以使用深度优先搜索(DFS)和拓扑排序算法来解决这个问题。 深度优先代码: using Sys
阅读全文
摘要:原文链接:https://blog.csdn.net/weixin_41883890/article/details/125517599 本文介绍C#实现图的邻接矩阵和邻接表结构。逻辑结构分为两部分:V和E集合,其中,V是顶点,E是边。因此,用一个一维数组存放图中所有顶点数据;用一个二维数组存放顶点
阅读全文
摘要:原文链接:https://blog.csdn.net/weixin_38754799/article/details/120681819 我们来看一下 函数sum(n=5)的递归执行过程,如下: 计算sum(5)时,先sum(5)入栈,然后原问题sum(5)拆分为子问题sum(4),再入栈,直到终止
阅读全文