自定义博客皮肤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 482

原创 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 254

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

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

2020-03-12 15:28:46 364

原创 leetcode 239 滑动窗口最大值

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

2020-03-11 11:29:26 162

原创 螺旋矩阵 54/59

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

2020-03-10 20:44:19 197

原创 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 148

原创 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 226

原创 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 135

原创 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 141

原创 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 160

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

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

2020-03-05 19:05:30 296

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

https://www.cnblogs.com/caoxinyu/p/10568496.html static 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 124

原创 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 136

原创 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 486

原创 两数相加 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 168

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

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

2020-02-13 20:32:42 216

原创 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 356

原创 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 466 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 141

转载 uthash 英文介绍

C开源hash代码uthash的用法总结 https://blog.youkuaiyun.com/const_gong/article/details/50487806 Macro reference Convenience macros The convenience macros do the same thing as the generalized macros, but require fe...

2020-02-07 10:02:16 350

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

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

2019-12-04 21:28:55 3755

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

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

2019-10-20 22:54:10 1457

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

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

2019-09-23 19:57:02 3380

空空如也

空空如也

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

TA关注的人

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