日刻一诗
文章平均质量分 73
匠心来编码
大部分是刷LeetCode的记录分享
wangwangmoon_light
江湖不易
展开
-
【日刻一诗】_Coding
目录结构原创 2023-02-19 17:43:50 · 434 阅读 · 0 评论 -
1.18 LeetCode总结(基本算法)_设计类
编程总结在刷题之前需要反复练习的编程技巧,尤其是手写各类数据结构实现,它们好比就是全真教的上乘武功原创 2021-04-04 23:30:44 · 243 阅读 · 1 评论 -
1.22 LeetCode总结(基本算法)_位运算
进制即进位计数制,是利用固定的数字符号和统一的规则的带进位的计数方法。任何一种进位计数制都有一个基数,基数为X 的进位计数制称为 X 进制,表示每一个数位上的数运算时都是逢X 进一。原创 2024-06-16 10:04:49 · 351 阅读 · 0 评论 -
1.20 LeetCode总结(基本算法)_模拟类
模拟原创 2023-03-05 15:19:20 · 178 阅读 · 0 评论 -
1.12 LeetCode总结(基本算法)_DFS类
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧*17)电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf...原创 2020-08-28 23:54:10 · 673 阅读 · 1 评论 -
1.13 LeetCode总结(基本算法)_BFS类
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧BFS 是广度优先遍历,常借助队列来实现队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队头删除,队尾插入。 Front <= Tail剑指 Offer 32 - I. 从上到下打印二叉树思路:#define MA原创 2020-09-06 20:51:03 · 242 阅读 · 1 评论 -
1.1 LeetCode总结(线性表)_链表类
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧206)反转链表输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?下图一到图二进行了四个步骤的变化:struc...原创 2020-04-19 18:46:18 · 572 阅读 · 1 评论 -
1.2 LeetCode总结(线性表)_栈队列类
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧020)有效括号原创 2020-01-15 09:17:11 · 706 阅读 · 1 评论 -
1.3 LeetCode总结(线性表)_滑动窗口
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧双指针尤其要注意用例出现超时;切记直接暴力两层循环解题,能用左右指针使用双指针解题。...原创 2021-06-25 19:42:15 · 2330 阅读 · 0 评论 -
1.4 LeetCode总结(线性表)_数组类
编程总结原创 2021-05-16 17:25:34 · 255 阅读 · 1 评论 -
1.5 LeetCode总结(线性表)_哈希表类
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧705. 设计哈希集合方法一:链地址法设哈希表的大小为 \textit{base}base,则可以设计一个简单的哈希函数:\text{hash}(x) = x \bmod \textit{base}hash(x)=xmodbase。我们开辟一个大小为 \textit{base}base 的数组,数组的每个位置是一个链表。当计算出哈希值之后,就插入到对应位置的链表当中。由于我们使用整数除法作为原创 2021-03-14 23:16:42 · 351 阅读 · 1 评论 -
1.6 LeetCode总结(线性表)_单调栈类
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧单调栈这个东东太难理解了!~~~~ 设置一个专题来理解496. 下一个更大元素 I...原创 2021-03-08 23:01:10 · 214 阅读 · 1 评论 -
1.7 LeetCode总结(线性表)字符串类
编程总结在专栏日刻一诗中有初级关于字符串处理函数的介绍,而本专栏强化学习是进阶篇,将记录一些刷题实际遇到的“坑”541. 反转字符串 IIvoid swap(char *a, char *b) { char tmp = *a; *a = *b, *b = tmp;}void reverse(char *l, char *r) { while (l < r) { swap(l++, r--); }}char *reverseStr(char *s, int k){原创 2021-08-22 20:09:46 · 162 阅读 · 0 评论 -
1.7 LeetCode总结(线性表)字符串类
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧122. 买卖股票的最佳时机 II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候...原创 2020-02-09 21:36:22 · 936 阅读 · 1 评论 -
1.8 LeetCode总结(树)_二叉树类
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧110. 平衡二叉树法1:int max(int a, int b) { return a > b ? a : b;}int maxDepth(struct TreeNode *root) { int depth = 0; if (root == NULL) { ...原创 2020-03-02 22:51:25 · 669 阅读 · 1 评论 -
1.9 LeetCode总结(图)_图类
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧279)完全平方数给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。#include <stdio.h>#include <string.h>#include <st...原创 2020-02-15 18:40:59 · 431 阅读 · 1 评论 -
1.10 LeetCode总结(基本算法)_递归算法
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧104)二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。3/ 9 20/ 15 7返回它的最大深度 3int maxDepth(struct TreeNode *ro...原创 2020-02-08 18:48:36 · 460 阅读 · 1 评论 -
1.11 LeetCode总结(基本算法)_DFS之回溯算法
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧–2020/11/24—不一定都要用HashMap,内存容易超448. 找到所有数组中消失的数字给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。原创 2020-11-28 00:17:11 · 173 阅读 · 1 评论 -
1.14 LeetCode总结(基本算法)_二分查找类
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。二分查找:int searchInsert(int* nums, int numsSize, int target){ in...原创 2020-05-05 20:34:46 · 422 阅读 · 2 评论 -
1.15 LeetCode总结(基本算法)_DFS之二维平面上的搜索问题
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧#define DIRECT 4#define MAX_N 128static int **matrix;static int m, n;static int iGo[] = { -1, 0, 1, 0 };static int jGo[] = { 0, 1, 0, -1 };static int visited[MAX_N][MAX_N];static bool IsValid(i原创 2020-08-12 23:27:16 · 1208 阅读 · 1 评论 -
1.16 LeetCode总结(基本算法)动态规划
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧动态规划 – 自下而上的解决问题;记忆化搜索,自顶向下的解决问题。– 动态规划–将原问题拆解成若干子问题,同时保存子问题的答案,使每个子问题只求解一次,最终获得原问题的答案。70. 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少...原创 2020-02-09 21:04:13 · 353 阅读 · 1 评论 -
1.16 LeetCode总结(基本算法)动态规划
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时...原创 2020-03-15 15:53:38 · 394 阅读 · 1 评论 -
1.16 LeetCode总结(基本算法)动态规划2
既然存在大量重复计算,那么我们可以先把计算好的答案存下来,即造一个备忘录,等到下次需要的话,先去备忘录查一下,如果有,就直接取就好了,备忘录没有才开始计算,那就可以省去重新重复计算的耗时啦!这就是带备忘录的解法。因此,青蛙跳阶,递归解法的时间复杂度 = O(1) * O(2^n) = O(2^n),就是指数级别的,爆炸增长的,如果n比较大的话,超时很正常的了。动态规划从较小问题的解,由交叠性质,逐步决策出较大问题的解,它是从f(1)往f(10)方向,往上推求解,所以称为自底向上的解法。原创 2024-04-14 15:40:56 · 1038 阅读 · 0 评论 -
1.17 LeetCode总结(基本算法)_并查集
并查集原创 2022-09-25 17:39:25 · 141 阅读 · 0 评论 -
1.19 LeetCode总结(基本算法)_数学类
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧原创 2020-02-29 10:43:50 · 885 阅读 · 1 评论 -
1.21 LeetCode总结(基本算法)_贪心算法
/---------------------------------------------------------------------------------/455. 分发饼干– 将最大的饼干给最贪心的小朋友吃假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每...原创 2020-04-26 21:39:52 · 491 阅读 · 1 评论 -
LeetCode刷题总结(C语言版)
编程总结每每刷完一道题后,其思想和精妙之处没有地方记录,本篇博客用以记录刷题过程中的遇到的算法和技巧001)两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的两个整数。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] ...原创 2020-01-02 21:40:33 · 5744 阅读 · 2 评论 -
算法学习总结(读书笔记)--Part1-排序算法总结
1、 网上关于排序算法有很多,风格迥异,大家都有自己的习惯与方式。我也结合自己的风格,以及近期的找工作面试情况,试图用简单凝练的方式来记录它们,希望对于读者可以方便快速地掌握。 首先,需要把每种排序的定义记住~1、冒泡排序 定义:由第一个元素开始,比较相邻元素大小,若大小顺序有误,则对调。最坏与平均情况需要比较(n-1)+(n-2)+….+3+2+1 = n(n-1)/2 次。...原创 2017-10-09 21:45:51 · 653 阅读 · 0 评论