![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
CoCo_DY
处理器小学生
展开
-
排序算法整理
排序算法原创 2023-01-29 08:42:24 · 45 阅读 · 0 评论 -
Leetcode 剑指 Offer 34 二叉树中和为某一值的路径
这道题主要考察对二叉树指针的理解。具体分析参考剑指offer34.时间和内存消耗以及源代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; *//** * Return an array of arrays of size *returnSize原创 2020-08-11 10:51:50 · 86 阅读 · 0 评论 -
Leetcode 剑指 Offer 33 二叉搜索树的后序遍历序列
这道题主要考察对后顺遍历的理解。具体分析参考剑指offer33.时间和内存消耗以及源代码如下:bool verifyPostorder(int* postorder, int postorderSize){ if (postorder == NULL || postorderSize == 0) { return true; } if (postorderSize == 1) { return true; }原创 2020-08-06 08:38:35 · 93 阅读 · 0 评论 -
Leetcode 剑指 Offer 32 - III 从上到下打印二叉树
这道题和上道题是一样的,不同在于赋值需要一个行数奇偶判断部分。具体分析参考剑指offer32.时间和内存消耗以及源代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; *//** * Return an array of arrays of si原创 2020-08-05 10:18:08 · 155 阅读 · 0 评论 -
Leetcode 剑指 Offer 32 - II 从上到下打印二叉树
这道题主要考察对各种数据结构间的相互切换和双指针的用法。具体分析参考剑指offer32.时间和内存消耗以及源代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; *//** * Return an array of arrays of size *原创 2020-08-05 09:51:41 · 447 阅读 · 0 评论 -
Leetcode 剑指 Offer 32 - I 从上到下打印二叉树
这道题主要考察对各种数据结构间的相互切换。具体分析参考剑指offer32.时间和内存消耗以及源代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; *//** * Note: The returned array must be malloced原创 2020-08-03 15:36:52 · 78 阅读 · 0 评论 -
Leetcode 剑指 Offer 31 弹出序列
这道题主要考察对各种可能出现情况的分析判断。具体分析参考剑指offer31.P.S. 前几次提交的时候超出了规定时间,在编写代码时需要注意代码的规范。时间和内存消耗以及源代码如下:bool validateStackSequences(int* pushed, int pushedSize, int* popped, int poppedSize){ if (pushed == NULL && popped == NULL) { re原创 2020-07-31 13:28:52 · 103 阅读 · 0 评论 -
Leetcode 剑指 Offer 30 包含min函数的栈
这道题主要考察对代码的分析。具体分析参考剑指offer30.时间和内存消耗以及源代码如下:typedef struct { int* pbottom; int count;} MinStack;/** initialize your data structure here. */MinStack* m_data;MinStack* m_min;MinStack* minStackCreate() { m_data = (MinS原创 2020-07-31 10:12:06 · 87 阅读 · 0 评论 -
Leetcode 剑指 Offer 29 顺时针打印矩阵
这道题主要考察利用画图解决抽象问题。具体分析参考剑指offer29.P.S. 在编写代码时需要将*returnSize赋值,否则会出错。时间和内存消耗以及源代码如下:/** * Note: The returned array must be malloced, assume caller calls free(). */int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){原创 2020-07-30 13:55:41 · 101 阅读 · 0 评论 -
Leetcode 剑指 Offer 28 对称的二叉树
这道题主要考察利用画图解决抽象问题。具体分析参考剑指offer28.时间和内存消耗以及源代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */bool isAssymetric(struct TreeNode* pRight, stru原创 2020-07-30 10:37:24 · 104 阅读 · 0 评论 -
Leetcode 剑指 Offer 27 二叉树的镜像
这道题主要考察利用画图解决抽象问题。具体分析参考剑指offer27.时间和内存消耗以及源代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */void exchangeTree(struct TreeNode* root){ i原创 2020-07-29 10:55:18 · 102 阅读 · 0 评论 -
Leetcode 剑指 Offer 26 树的子结构
这道题主要考察对树的理解以及递归算法。具体分析参考剑指offer26.时间和内存消耗以及源代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */bool isTotolEqual(struct TreeNode* A, struct Tree原创 2020-07-29 10:10:38 · 83 阅读 · 0 评论 -
Leetcode 剑指 Offer 25 合并两个排序的链表
这道题主要考察的是对指针的熟悉程度。具体解题思想参考剑指offer 25.时间和内存消耗以及源代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){原创 2020-07-28 11:08:50 · 90 阅读 · 0 评论 -
Leetcode 剑指 Offer 24 反转链表
这道题主要考察的是对指针的熟悉程度。具体解题思想参考剑指offer 24.时间和内存消耗以及源代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* head){ if (head == NULL)原创 2020-07-28 10:24:45 · 59 阅读 · 0 评论 -
Leetcode 剑指 Offer 22 链表中倒数第k个节点
这道题主要考察的是对错误输入的判断。具体解题思想参考剑指offer 22.时间和内存消耗以及源代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* getKthFromEnd(struct ListNode* head, int k){ if (hea原创 2020-07-27 13:23:18 · 84 阅读 · 0 评论 -
Leetcode 剑指 Offer 21 调整数组顺序使奇数位于偶数前面
这道题主要考察的是排序算法。具体解题思想参考剑指offer 21.时间和内存消耗以及源代码如下:/** * Note: The returned array must be malloced, assume caller calls free(). */bool isEven(int Point){ if ((Point & 1) == 1) { return true; } return false;}int*原创 2020-07-27 11:55:06 · 76 阅读 · 0 评论 -
Leetcode 剑指 Offer 20 表示数值的字符串
这道题主要考察的是动态规划算法。P.S.需要考虑到空格的问题,当空格在字符串最前面和最后面时为true,但是在两个字符中间时为false.时间和内存消耗以及源代码如下:bool isUnsignedNumber(char** s_point){ char* before = *s_point; while (**s_point >= '0' && **s_point <= '9' && **s_poin原创 2020-07-24 13:01:09 · 79 阅读 · 0 评论 -
Leetcode 剑指 Offer 19 正则表达式匹配
这道题主要考察的是对各种情况的判断时间和内存消耗以及源代码如下:bool isMatchCore(char* s, char* p){ if (*p == *s) { if (*p == '\0') { return true; } else { return isMatchCore(s+1, p+1); }原创 2020-07-24 10:56:09 · 91 阅读 · 0 评论 -
Leetcode 剑指 Offer 18 删除链表的节点
这道题主要考虑的是对链表边界(特殊情况)的检测P.S. 需要注意对于int类型变量来说0和NULL一样时间和内存消耗以及源代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* deleteNode(struct ListNode* head, int val){原创 2020-07-23 13:33:39 · 78 阅读 · 0 评论 -
Leetcode 剑指 Offer 17 打印从1到最大的n位数
leetcode上的题目比剑指offer上的题目简单得多,因为其返回的是int,所以每个数据的size都限制在了int的范围内。时间和内存消耗以及源代码如下:/** * Note: The returned array must be malloced, assume caller calls free(). */int* printNumbers(int n, int* returnSize){ int size = 1; for (int i=0;原创 2020-07-23 12:23:57 · 78 阅读 · 0 评论 -
Leetcode 剑指 Offer 16 数值的整数次方
这道题考察的是递归算法。具体解题方法参考剑指offer 16.P.S.需要注意对错误代码的三种判断方法。在检验代码时,n如果是-2147483648的话,对其取复数会超过内存(溢出),所以需要先将其转化为unsigned,然后再取负,在对unsigned取负会求其补码,因此不会溢出。需要注意double字符最后有0.0000位时间和内存消耗以及源代码如下:bool InvalidInput = false;double myPowunsignedexponent(d原创 2020-07-22 11:52:41 · 102 阅读 · 0 评论 -
Leetcode 剑指 Offer 15 二进制中1的个数
这道题考察的主要是二进制的位运算,需要注意的是有符号数的判断。解题细节参考剑指offer.普通解法:对1左移并于n取与来判断此位是否为1时间和内存消耗以及源代码如下:int hammingWeight(uint32_t n) { int counts = 0; unsigned int sign = 1; while (sign) { if (n&sign) { count原创 2020-07-22 10:39:08 · 78 阅读 · 0 评论 -
Leetcode 剑指 Offer 14- II 剪绳子 II
这道题考察的是贪婪算法。解题细节参考剑指offer.P.S.这道题的难点之一是需要将结果先赋值为long int字符,否则内存不足以计算模这道题的难点之二是需要对当n>=5时,3*(n-3) >= 2*(n-2);当n=4时2*2最大时间和内存消耗以及源代码如下:int cuttingRope(int n){ int num3,num2; long long m; if (n < 1) { return 0;原创 2020-07-21 14:52:59 · 136 阅读 · 0 评论 -
Leetcode 剑指 Offer 14- I 剪绳子
这道题考察的是动态规划。解题细节参考剑指offer.P.S. 对于n=1,n=2,n=3,produce和最终结果不同因为最终结果必须剪一刀,而produce可以为n自己。时间和内存消耗以及源代码如下:int cuttingRope(int n){ int m; int produce[n]; //对于n=1,n=2,n=3,produce和最终结果不同因为最终结果必须剪一刀,而produce可以为n自己 if (n < 1) {原创 2020-07-21 13:56:31 · 169 阅读 · 0 评论 -
Leetcode 剑指 Offer 13 机器人的运动范围
这道题考察的是回溯算法。P.S. 与12题不同的是其不需要搜索对比路径,因此在movingCountCore函数的else中不需要再清除visit。时间和内存消耗以及源代码如下:int getDigitSum(int num){ int sum = 0; if (num>9) { sum = num%10 + num/10; } else { sum = num; }原创 2020-07-21 11:29:10 · 82 阅读 · 0 评论 -
Leetcode 剑指 Offer 12 矩阵中的路径
这道题考察的是回溯算法具体解题方法参考剑指offer 12.P.S.calloc分配内存的时间消耗很大。在迭代的时候,如果返回结果是false,需要把标定清楚。内存和时间消耗以及源代码如下:bool existCore(char** board, int cols, int rows, char* word, int col, int row, bool* visit, int wordnum){ bool end = fa原创 2020-07-17 13:09:18 · 112 阅读 · 0 评论 -
Leetcode 剑指 Offer 11 旋转数组的最小数字
这道题考察的是二分检索算法。内存和时间消耗以及源代码如下:int inorder (int* numbers, int numbersSize){ int small = 0; for (unsigned int i=1; i<numbersSize; i++) { if (numbers[i] < numbers[small]) { small = i;原创 2020-07-16 13:44:57 · 85 阅读 · 0 评论 -
Leetcode 剑指 Offer 10- I 斐波那契数列 和 剑指 Offer 10- II 青蛙跳台阶问题
迭代算法的时间和内存损耗以及源代码:int fib(int n){ if (n == 0) { return 0; } else if (n == 1) { return 1; } else { return fib(n-1)+fib(n-2); }}迭代算法虽然简洁但是时间和内存消耗(会造成栈溢出)都很多,因此需要用循环来解这道题。时间和内存消耗以原创 2020-07-15 12:55:32 · 242 阅读 · 0 评论 -
Leetcode 剑指 Offer 09 用两个栈实现队列
这道题考察的是栈的使用,两个栈可以实现一个FIFO具体解题方法参考剑指offer 09P.S. free可以把malloc分配的内存排空,在本题实现过程中需要先把CQueue中的stakebottom1, stakebottom2分配的内存先排空再排空CQueue.内存和时间消耗以及源代码如下:typedef struct { int* stakebottom1; int stakelength1; int* stakebottom2; int原创 2020-07-15 12:29:57 · 69 阅读 · 0 评论 -
Leetcode 剑指 Offer 07 重建二叉树
这道题考察的是对二叉树三种表示方法的理解,主要的实现方法是递归。具体参考剑指offer。P.S. 在定义TreeNode变量的时候一定要用malloc重新分配地址,否则变量为空,没有办法赋值。时间和内存消耗以及源代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; *原创 2020-07-14 12:03:35 · 94 阅读 · 0 评论 -
Leetcode 剑指 Offer 06 从尾到头打印链表
这道题考察的是对链表定义的理解,需要设置一个链表来存储倒序的原始链表。实际上可以用栈来解决。P.S.编程的时候最好将head和reverseStake链表都列出来,值得注意的是,两者都代表着指针,当两者的所代表的地址相同时,改变其中一个地址中的数值会影响另一个。因此需要一些中间变量来暂时存储数值,比如insert和insert1.数值为空是’NULL’.程序的耗时内存和源代码如下/** * Definition for singly-linked list. * struct ListN原创 2020-07-06 16:37:13 · 89 阅读 · 0 评论 -
Leetcode 剑指 Offer 05 二维数组中的查找
剑指offer里面的解法,主要考察对数组类数据结构的理解P.S.在字符串的末尾一定要加上’\0’malloc与realloc的区别代码耗时、内存及源代码:char* replaceSpace(char* s){ if(s==NULL) { return 0; } int numberOfBlank=0; int i=0; int originalLength=0; while (s[i] != '\0')原创 2020-07-05 11:51:42 · 114 阅读 · 0 评论 -
Leetcode 剑指 Offer 04 二维数组中的查找
剑指offer 面试题4中的解答方法.P.S.需要对二维数组进行判断力扣里输入的是一个二维数组,因此在找二维数组里数值时应该用matrix[i][j]的格式这里的* matrixColSize是因为在定义matrix的时候其地址在 imatrixColSize+j的位置,所以当j=0的时候,指向的就是imatrixColSize位置,**matrix的地址(*matrix)就是列的长度用时和内存以及代码如下:bool findNumberIn2DArray(int** matrix, in原创 2020-07-03 14:50:47 · 142 阅读 · 0 评论 -
Leetcode 剑指 Offer 03 数组中重复的数字
剑指offer 面试题3中题目一的解答方法,使用hash列表进行排序。解题的前提是已知具有重复的数字并且字符串长度和最大字数相同。P.S.没有判断字符串长度c语言中在函数中进行参数传递时,如果涉及数组则传递的数字为数组第一位数的指针解题代码为int findRepeatNumber(int* nums, int numsSize){ int repeat; int i; int numtemp; for (i=0 ;i<numsSize ;++原创 2020-07-03 11:49:55 · 95 阅读 · 0 评论 -
Leetcode #1391 检查网格中是否存在有效路径
第一次做深度优先算法的题,下次做广度优先算法P.S. DFS和BFS的定义可以看参考文献代码(参考了网站上的题解):class Solution: def hasValidPath(self, grid) -> bool: # 2 #3 1 # 4 # road[street_num][in]=road_out import sys sy原创 2020-06-08 10:25:39 · 202 阅读 · 0 评论 -
Leetcode #1367 二叉树中的列表
第一次做二叉树的题,本次实验学习使用了:ListNode, TreeNode的使用迭代算法的使用Python3的 def使用方法网站上的代码:class Solution: def dsf_self(self, head, root): if head== None: return True elif root==None: return False if原创 2020-06-06 11:34:10 · 121 阅读 · 0 评论 -
Leetcode #273 整数转换英文表示
将数字分成三个数字一小组的listP.S.代码还需要改进;以后的代码都会写备注;以下是Python 的源代码:import numpyimport mathclass Solution(object): def numberToWords(self, num): """ 将整个数字分成三个一小组的list :type num: int :rtype: str """ num0=num原创 2020-06-04 07:13:11 · 130 阅读 · 0 评论 -
Leetcode #1012 至少有 1 位重复的数字
解题思路:可以尝试使用dfs和dp算法第一次通过使用的代码:import numpy class Solution(object): def numDupDigitsAtMostN(self,N): """ :type N: int :rtype: int """ dig=1 num=0 inter=N point=[] while inter//10原创 2020-06-02 10:42:53 · 182 阅读 · 0 评论 -
Leetcode #1177 构建回文串检测
解题思路:利用哈希表的思想,观察给定字符串中某个字母的出现次数是奇数还是偶数。P.S. 在网上上传时网站有bug,输出结果都是'true'```pythonimport numpyimport mathclass Solution(object): def canMakePaliQueries(self, s, queries): """ :type s: str :type queries: List[List[int]]原创 2020-06-02 10:23:32 · 152 阅读 · 0 评论 -
Leetcode #1010 总持续时间可被 60 整除的歌曲
class Solution(object): def numPairsDivisibleBy60(self, time): """ :type time: List[int] :rtype: int """ num=0 number=[0 for _ in range(60)] # number: numbers of couple length=len(time) #le.原创 2020-05-15 20:07:18 · 158 阅读 · 0 评论