自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 leetcode 542 01 矩阵 BFS 动态规划

解题思路: 如果从元素为1 的开始做bfs, 时间复杂度为O(N^2 * M^2)算法会超时;从元素为0开始做bfs, 时间复杂度为O(N*M), 不会导致超时。 另外需要将所有值为0 的元素全部入队列之后, 才开始开始第一轮的bfs, 可以确保所有为0 的元素开始向外扩展动态规划思路: 从左下 和右上的两个方向进行 dp的计算/** * Return an array of...

2020-04-02 08:48:27 378

原创 leetcode 684. 冗余连接 ufs

解题思路: ufs 并查集中关键:一条边的两个节点的父节点不相同则Union,若相同则说明这两个节点之前已经被Union过即此边为多余边。(请细品)并查集用了路径压缩和按秩归并提高效率。/** * Note: The returned array must be malloced, assume caller calls free(). */typedef struct {...

2020-03-17 21:00:33 173

原创 leetcode959. 由斜杠划分区域 矩阵和递归

解题思路: 将1个空格放到3*3 的矩阵, 这样 ‘/’ 和'\\' 变成如下数据, 扩展后使用递归的方式进行查找。注意 '\\’ 为单个字符, 且字符串中长度即为10 0 1 1 0 00 1 0 0 1 01 0 0 0 0 1void outputMaxtrix(int** map, int num){ for (int i =...

2020-03-12 15:28:46 270

原创 leetcode 239 滑动窗口最大值

lession learn:1、 如果出现一个新的最大值, 则队列清零2、 如果出现的数字比上一个最大值小, 则需要记录在队列中 其中队列满时需要把队列中最早加入的数字删除, 并重新排序 队列不满时仅需要按顺序加入队列即可。3、 第一个K个数字需要全部进入队列。/** * Note: The returned array must be mall...

2020-03-11 11:29:26 105

原创 螺旋矩阵 54/59

lession learn: 判断数据为空时 需要注意不能使用*matrixCokSize, 因为本身就有可能是NULL正确的方法: if (matrix == NULL || matrixSize == 0) { *returnSize = 0; return NULL; }错误方法: if (matrix == NULL ...

2020-03-10 20:44:19 134

原创 leetcode 130. 被围绕的区域 994. 腐烂的橘子 BFS

typedef struct { int x; int y;} position_t;void BFS(char** board, int x, int y, int row, int col, int** visit){ int rear = -1; int front = -1; int i, j; position_t tem...

2020-03-07 17:42:14 111

原创 leeetcode 36. 有效的数独

bool isValidSudoku(char** board, int boardSize, int* boardColSize){ if (!board || (boardSize != 9) || (*boardColSize != 9)) return false; int col[9][9] = {0}; int square[9][9] = {...

2020-03-06 17:39:57 147

原创 leetcode 33. 搜索旋转排序数组

static int search_start(int* nums, int numsSize, int start, int end){ if (nums[start] < nums[end]) { return 0; } while (start <= end) { int tmp = (start + end)...

2020-03-06 17:38:32 85

原创 leetcode 31 下一个排列 (双排列)

int cmp(const void *a, const void *b){ return *((int *)a) - *((int *)b);}void nextPermutation(int* nums, int numsSize){ if(!nums || numsSize <= 1) { return; } ...

2020-03-06 17:36:51 94

原创 leetcode16_最接近的三数之和 双指针 排序

int compare (void *a, void *b){ return *((int *)a) - *((int *)b);}int threeSumClosest(int* nums, int numsSize, int target){ if (!nums || numsSize < 3) { return -INT_MAX; }...

2020-03-06 17:23:09 119

原创 leetcode 994. 腐烂的橘子 广度优先算法

解题思路:基础的广度优先算法, 需要创建的node 类型应该包括该位置腐化的时间min, 下一轮腐化的时间等于原有基础上+1;另外初始化队列时应轮询整个数组,全部放入;四个方向的坐标需要注意方向。typedef struct { int x; int y; int min;} node_t;#define MAX_DIRECTION 4no...

2020-03-05 19:05:30 216

原创 leetcode 33. 搜索旋转排序数组 二分法查找

https://www.cnblogs.com/caoxinyu/p/10568496.htmlstatic int search_start(int* nums, int numsSize, int start, int end){ if (nums[start] < nums[end]) { return 0; } while (...

2020-03-05 09:04:22 78

原创 leetcode31 下一个排列

int cmp(const void *a, const void *b){ return *((int *)a) - *((int *)b);}void nextPermutation(int* nums, int numsSize){ if(!nums || numsSize <= 1) { return; } int i = nu...

2020-03-05 08:45:02 85

原创 leetcode 22 括号的生成 回溯法

/** * Note: The returned array must be malloced, assume caller calls free(). */int pos;void getAns(char ** result, int left, int right, int *retNum, int n, char * map) { //printf("line:%d %...

2020-03-05 08:37:32 377

原创 两数相加 2 、445

struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){ if(!l1 || !l2) { return NULL; } struct ListNode * ret = (struct ListNode *)calloc(1, sizeof(struct ...

2020-02-27 09:12:00 113

原创 leetcode 142 环形链表 II/ 287. 寻找重复数 -- 快慢指针的使用

快慢指针介绍及功能:https://blog.csdn.net/qq_21815981/article/details/79833976https://www.jianshu.com/p/21b4b8d7d31b问题转换为142题。那么针对此题,快、慢指针该如何走呢。根据上述数组转链表的映射关系,可推出142题中慢指针走一步slow = slow.next ==&g...

2020-02-13 20:32:42 138

原创 leetcode 46 不重复数组全排列 47. 全排列 II

题目: 给定一个没有重复数字的序列,返回其所有可能的全排列。易错点:正确写法: (*returnColumnSizes)[i] = numsSize;错误写法:*returnColumnSizes[i] = numsSize;/** * Return an array of arrays of size *returnSize. * The sizes of the ...

2020-02-10 08:55:27 255

原创 leetcode 39 -- 组合总和 查询所有子集的和等于targert 的组合 C语言解法

回溯法 = 深度搜索 + 剪枝 且深度搜索一般使用递归来实现,程序代码相对简洁代码模板/*** dfs 模板.* @param[in] input 输入数据指针* @param[inout] cur or gap 标记当前位置或距离目标的距离* @param[out] path 当前路径,也是中间结果* @param[out] result 存放最终结果* @return 路径...

2020-02-08 15:59:04 377 1

转载 优雅地非递归遍历二叉树

前中后序遍历二叉树public class BinaryTreeNode<T> { public T Value { get;set; } public BinaryTreeNode<T> Parent { get;set; } public BinaryTreeNode<T> Left { get...

2020-02-07 11:23:34 94

转载 uthash 英文介绍

C开源hash代码uthash的用法总结https://blog.csdn.net/const_gong/article/details/50487806Macro referenceConvenience macrosThe convenience macros do the same thing as the generalized macros, but require fe...

2020-02-07 10:02:16 219

原创 可信考试 -- 安全函数及qsort函数

1、安全函数使用安全函数库头文件 #include <secure.h>1.1 memcpy_serrno_t memcpy_s( void* dest, size_t destMax, const void* src, size_t count);1.2 memset_serrno_t memset_s(void* dest, size_t destMax, in...

2019-12-04 21:28:55 3146

转载 动态规划解决01背包问题

动态规划解决01背包问题一、问题描述:有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?二、总体思路:根据动态规划解题步骤(问题抽象化、建立模型、寻找约束条件、判断是否满足最优性原理、找大问题与小问题的递推关系式、填表、寻找解组成)找出01背包问题的最优解以及解组成,然后编写代码实现;三、动态规划的原理及过程:  eg:number...

2019-10-20 22:54:10 1403

转载 动态规划-- 数组最大不连续递增子序列

应该把这个问题看成一个基本问题,感觉用动态规划的算法比较容易想到,也很不错,关于那个改进的O(nlogn)的算法有些不太明白,大部分动态规划都要寻求一个当前状态的最小值或最大值,如果按这样的思想,那不是所有的DP算法都可以降为O(nlogn)?以下文章转载自CSDN,我收藏一下。因为找不到原作作者,敬请原谅,如果您是作者请告知我。最长递增子序列问题的求解最长递增子序列问题是一个很...

2019-09-23 19:57:02 3189

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除