Leetcode算法
文章平均质量分 66
方便回顾自己写的算法并不断改进
ken的学习之路
这个作者很懒,什么都没留下…
展开
-
leetcode124. 二叉树中的最大路径和(Python)
1、题目路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。题目可以简化为:对于给定的以root为根节点的二叉树,计算任意两个节点之间的路径和。并最终返回最大的那个路径和。2、递归思路对于给定的以root为根节点的二叉树,我们计算两个最大路径和。2.1、第一个是求以根节点为起点或终点原创 2021-07-24 22:01:53 · 1508 阅读 · 5 评论 -
char * 申请空间要多一位 && leetcode.22括号生成(C语言)
这道题利用深度优先遍历算法,与其他类似的题大同小异。只是在一段时间没刷题后,对一些语法的使用不是很确定了。这道题卡在了给辅助指针的最后一位加上’\0’,再进行strcpy。这样就保证最终结果不会出现溢出错误。特此记录一下。/** * Note: The returned array must be malloced, assume caller calls free(). */ ///建立一个树结构体typedef struct BiTnode{ int leftnum; int原创 2020-10-11 10:38:46 · 223 阅读 · 0 评论 -
leetcode.79单词搜索(C语言)容易理解
采用深度搜索算法 代码如下:bool ex(char** board, int *boardColSize, int line, int i, int j,int w,int **mask,char *word){ if(i<0 || i>=line || j<0 || j>=boardColSize[i]) //如果当前坐标越界,直接返回false...原创 2020-04-04 20:31:31 · 231 阅读 · 0 评论 -
char * 与char [] 的区别(附leetcode.76代码)
https://blog.csdn.net/edward_zcl/article/details/89451078当char s = “hello”;后,不能使用s[0]=‘a’;语句进行赋值。这是将提示内存不能为"written"。当用char s[]=“hello”;后,完全可以使用s[0]=‘a’;进行赋值,这是常规的数组操作。#include<stdio.h>#incl...原创 2020-02-25 11:21:18 · 136 阅读 · 0 评论 -
leetcode.78子集(C语言,执行时间超越99%)
3、问题描述1、回溯法(完整可运行代码)#include<stdio.h>#include<math.h> #include<malloc.h> void digui(int *nums,int n,int count,int current,int *array,int numsSize,int *returnSize,int **returnC...原创 2020-02-25 11:20:15 · 379 阅读 · 5 评论 -
leetcode.75颜色分类(C语言)
1、问题描述2、代码void swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp;}void sortColors(int* nums, int numsSize){ int start = 0, end = numsSize-1; int i = 0; while(i <...原创 2020-02-18 14:57:28 · 233 阅读 · 0 评论 -
leetcode.72编辑距离(C语言)
1、问题描述编辑距离算法被数据科学家广泛应用,是用作机器翻译和语音识别评价标准的基本算法。2、动态规划我们用dp[ i ][ j ] 表示word1 中【1…i】变为 word2 中【1…j】需要的步数。第一张图:第二张图:接下来要制作动态规划表如何填呢?如果当前 word1 [ i ] == word2 [ j ], 那么dp[ i ] [ j ] = dp[i...原创 2020-02-17 14:03:29 · 316 阅读 · 0 评论 -
leetcode.4寻找两个有序数组的中位数(C语言)
1、问题描述这道题的边界判断比较的多,如果是边测试边界边编写判断语句的话,一点点的总能成功(我就是这样),如果要一口气分析的话属实有点麻烦。下面是具体思路:1、我们总能用一刀将两个数组各切成两半。切完之后呢,在nums1中,切线左边所有元素肯定小于右边所有元素,即L_MAX1 <= R_MIN1 同样,在nums2中,L_MAX2 <= R_MIN2 。这个毋庸置疑的。...原创 2020-02-13 15:46:36 · 576 阅读 · 1 评论 -
leetcode--62不同路径和64.最小路径和(C语言)
1、问题描述2、两种解法1、递归法(代码简洁,效率不高)可以画出一棵树,叶子节点个数对应路径个数。void path(int m, int n,int *p){ if(m==0 && n==0) (*p)++; if(m>0) path(m-1,n,p); if(n>0) path(m...原创 2020-02-12 13:39:56 · 350 阅读 · 0 评论 -
leetcode.56合并区间(C语言),qsort()函数之cmp
1、qsort()函数之cmpqsort(intervals,intervalsSize,sizeof(intervals),cmp);在这里 intervals 是指向二维数组的二级指针。那我这里要按照数组第一个元素的大小排序,cmp函数该怎么写呢?假设interval :[ [1,4], [0,3] ];要求排序后是:[ [0,3], [1,4] ];答:我这里cmp函数这样写:...原创 2020-02-11 14:47:57 · 774 阅读 · 0 评论 -
leetcode.53最大子序和(动态规划、贪心算法,分治法)
1、问题描述1、动态规划int max(int a, int b){ return a>b?a:b;}int maxSubArray(int* nums, int numsSize){ int dp[numsSize]; int res = nums[0]; dp[0] = nums[0]; for(int i=1; i<numsSiz...原创 2020-02-10 13:58:24 · 158 阅读 · 0 评论 -
leetcode.49字母异位词分组(C语言)
记录/** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Note: Both returned array and *columnSizes array must be malloced, assu...原创 2020-02-09 10:51:49 · 462 阅读 · 0 评论 -
leetcode.46全排列(C语言)
1、回溯法,利用辅助数组。/** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Note: Both returned array and *columnSizes array must be mal...转载 2020-02-07 16:34:38 · 516 阅读 · 0 评论 -
leetcode.42接雨水(C语言)
问题描述解法一、动态规划max_left[i]: 代表i位置左边最高的柱子的高度,处理完就如绿色阴影覆盖的区域。max_right[i]: 代表i位置右边最高的柱子的高度,处理完如红色阴影覆盖的区域。我们只讨论单个区域能装多少水。那么在 i 位置,我们能装多少水呢?很容易理解,i 区域能装多少水取决于i 左右两边柱子的高度。我们找到 i 左边最高的高度max_left[i] 和右边最...原创 2020-02-06 13:27:51 · 672 阅读 · 0 评论 -
Leetcode上测试用例测试结果正确,但提交后有错的问题
问题说明:在leetcode上刷题的时候,有时候会出现,测试的时候没有错,但提交就错。这就很头疼了这个问题我遇到几次,慢慢发现了其中的道理。分享给大家,1、如果你的...转载 2020-02-03 11:41:12 · 4420 阅读 · 2 评论 -
leetcode.34在排序数组中查找元素的第一个和最后一个位置(C语言)
1、非递归法int* searchRange(int* nums, int numsSize, int target, int* returnSize){ int *result = (int *)malloc(sizeof(int)*2); memset(result,-1,sizeof(result)); *returnSize=2; int left...原创 2020-02-02 20:37:44 · 301 阅读 · 0 评论 -
leetcode.32最长有效括号(C语言)--栈的应用
int longestValidParentheses(char * s){ int *stack; int length =strlen(s),k=0,num=0; stack = (int*)malloc(sizeof(int)*(length+1)); for(int i=0; i<length; i++){ if(i==0 || k==...原创 2020-02-02 15:23:55 · 435 阅读 · 0 评论 -
leetcode.23合并K个排序链表(C语言)--递归实现分治法
1、暴力法将k个列表的元素依次整合在一个列表中,然后利用简单选择排序排除即可。void Sort1(struct ListNode *list){ if(list->next==NULL) return; struct ListNode *p=list->next,*q; struct ListNode *min; int temp;...原创 2020-02-01 19:48:01 · 351 阅读 · 0 评论 -
leetcode.21合并两个有序链表(C语言)
1、迭代法struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){ struct ListNode *head1=l1,*head2=l2,*pre; struct ListNode *first = (struct ListNode*)malloc(sizeof(struct ListNo...原创 2020-01-26 20:22:02 · 205 阅读 · 0 评论 -
leetcode.20有效的括号(C语言)
借助栈来实现括号的匹配。用了感觉有点冗余的if else语句,其实改为switch代码会更加的简洁。bool isValid(char * s){ int i=0,j=0,length = strlen(s); char *stack = (char*)malloc(sizeof(char)*length); if(s[i]==0) //0在ASCII码中代表NULL...原创 2020-01-26 15:27:40 · 217 阅读 · 0 评论 -
leetcode.19删除链表的倒第N个节点(C语言)
有思路就一遍过了。采用双指针的方法,先让q指针向前走n个节点,然后在让p指针和q指针同时向前移动,知道q指针指向NULL,此时p指针所指的节点就是我们要删除的倒数第n个节点了。struct ListNode* removeNthFromEnd(struct ListNode* head, int n){ struct ListNode *p=head,*q=head,*r=head;...原创 2020-01-26 13:55:01 · 213 阅读 · 0 评论 -
leetcode算法题练习--最长回文子串(c语言)
1、问题描述Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example 1:Input: “babad”Output: “bab”Note: “aba” is also a valid answer....原创 2020-01-14 22:54:18 · 419 阅读 · 0 评论 -
学习心得--Leetcode报错 AddressSanitizer: heap-buffer-overflow on address 0x60200000002c (leetcode算法题4附代码)
学习心得:最近一直在刷leetcode,虽然刷的慢,但学的东西真的不少。上一篇学习心得我有讲过之前一直出现了内存溢出的情况,但一直未能解决。在刷到第四题:寻找两个数组的中位数时,我再次遇到了相同的问题。但这次我终于能找出原因了。先贴出错误的提示:LeetCode 使用了AddressSanitizer检查是否存在内存非法访问,它的问题主要是说我们对于数组的访问越界了。这个确实很头疼。当时...原创 2020-01-14 14:46:19 · 1386 阅读 · 0 评论 -
学习心得体会----最长无重复字符串(leetcode 算法题3)+刷题步骤
心得体会每一次做题都是学习的过程。因为时间比较的赶,我是带有目的性的刷题。所以选择了HOT 100来刷。并且主要分为下面几个步骤:1、看题+思考(花10-20分钟)2、不管思考得出思考不出,我都会先去看一下其他人的题解,这里只看他们的思路,不看代码。3、将自己的思路与比较好的思路结合了之后,开始着手编写代码4、调试代码,这期间会发生很多错误,一次性成功的可能性几乎没有。有时候甚至要重新换...原创 2020-01-13 15:31:03 · 199 阅读 · 0 评论 -
leetcode算法题练习--两数之和(c语言)(uthash.h的快速上手)
leetcode算法练习-两数之和最近打算直接刷leetcode上面 HOT100 题,之前用了暴力解法来解决这道题,但这几天发现我有必要学会哈希查找的用法,因为相比之下效率会快非常多,先上个对比图快了十倍不止,所以说还是很有必要的。1.uthash的快速上手在最新的leetcode中,我们可以看到官方默认导入了uthash.h,这就为我们直接使用带来了巨大的方便。点击“!”可以查看...原创 2020-01-13 10:08:49 · 1389 阅读 · 0 评论 -
leetcode算法题练习--两数相加(C语言)
leetcode算法练习–两数相加近期要准备复试,所以重新开始学习c语言,就单这道题我就回忆起了不少的知识点。于是想记录下来,便于回顾。之后若重复刷题,将会把更好的解法给补上去。1问题如下You are given two non-empty linked lists representing two non-negativeintegers. The digits are store...原创 2020-01-11 16:15:39 · 431 阅读 · 0 评论