力扣刷题记录2(无算法背景,纯C语言)

7、有效括号(20栈)

cpp 复制代码
bool isValid(char* s) 
{
    int len = strlen(s);
    if(len%2 != 0)return false;
    else if(len == 0)return false;
    int pStack = 0;
    char* Stack = (char *)malloc(sizeof(*s)*(len+1));
    for(int i=0; i<len; i++)
    {
        if(s[i] == '(')
        {

            Stack[pStack] = ')';
            pStack++;        
        }
        else if(s[i] == '[')
        {

            Stack[pStack] = ']';
            pStack++;        
        }
        else if(s[i] == '{')
        {

            Stack[pStack] = '}';
            pStack++;        
        }
        else
        {
            if(pStack == 0)return false;
            else if(Stack[pStack-1] == s[i])
            {
                pStack--;
            }
            else return false;
        }
    }
    if(pStack == 0)return true;
    else return false;
}

8、二叉树的中序遍历(94二叉树递归)

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */

void getnum(struct TreeNode* root,int *pNum,int *num)
{
    if (root == NULL) {
        return;
    }
    getnum(root -> left,pNum,num);
    num[(*pNum) ++] =root -> val;
    getnum(root -> right,pNum,num);
}

int* inorderTraversal(struct TreeNode* root, int* returnSize) {
    int pNum = 0;
    int *num = (int *)malloc(sizeof(int)*100);
    getnum(root,&pNum,num);
    *returnSize = pNum;
    return num;
}

9、二叉树最大深度(104二叉树遍历)

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int get_deep(struct TreeNode* root)
{
    int deep = 0;
    if(root == NULL)return 0;
    else deep++;
    int Left_deep = get_deep(root -> left);
    int Right_deep = get_deep(root -> right);
    return Left_deep>Right_deep?Left_deep+deep:Right_deep+deep;
}

int maxDepth(struct TreeNode* root) {
    return get_deep(root);
}

10、翻转二叉树(226二叉树递归)

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

void invert(struct TreeNode* root) 
{
    if(root == NULL)return;
    struct TreeNode* rootleft = root -> left;
    struct TreeNode* rootlright = root -> right;
    root -> left = rootlright;
    root -> right = rootleft;
    invert(root -> left);
    invert(root -> right);
}
struct TreeNode* invertTree(struct TreeNode* root) 
{
    invert(root);
    return root;
}

11.对称二叉树(101遍历二叉树)

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

bool isdydy(struct TreeNode* rootr,struct TreeNode* rootl)
{
    bool r = false;
    bool l = false;
    if(rootr == NULL && rootl == NULL)return true;
    if(rootr == NULL || rootl == NULL)return false;
    if(rootr->val == rootl->val)
    {
        r = isdydy(rootr->left,rootl->right);
        l = isdydy(rootr->right,rootl->left);
    }
    return r&&l;
}
bool isSymmetric(struct TreeNode* root) 
{
    if(root == NULL) return false;
    return isdydy(root -> left,root -> right);
}

12、无重复字符的最长子串(3双指针字符串滑动窗口)

cpp 复制代码
int lengthOfLongestSubstring(char* s) 
{
    int pPre = 0;//左
    int pBac = 0;//右
    int clong = 1;
    int len = strlen(s);
    if(len<=0)return 0;
    int Hashmap[128];
    memset(Hashmap,-1,sizeof(Hashmap)); 
    for(int i = 0; i < len; i ++)
    {
        if(Hashmap[(int)s[i]] < pPre)
        {
            Hashmap[(int)s[i]] = i;
            if (i > pBac)
            {
                pBac++;
                clong = pBac-pPre+1;
            }
        }
        else
        {
            pPre = Hashmap[(int)s[i]]+1;
            Hashmap[(int)s[i]] = i;
            pBac = pPre + clong - 1;
        }
        
    }
    return clong;
}
相关推荐
一个有毅力的吃货5 分钟前
这个SKILL打通了AI写公众号文章的最后一公里
css·算法
free-elcmacom10 分钟前
C++ 函数占位参数与重载详解:从基础到避坑
java·前端·算法
Frostnova丶13 分钟前
LeetCode 1415. 长度为 n 的开心字符串中字典序第 k 小的字符串
数据结构·算法·leetcode
美好的事情能不能发生在我身上13 分钟前
Leetcode热题100中的:技巧专题
算法·leetcode·职场和发展
荣光属于凯撒15 分钟前
P15755 [JAG 2025 Summer Camp #1] JAG Box
c++·算法·贪心算法
AI科技星29 分钟前
基于v≡c空间光速螺旋量子几何归一化统一场论第一性原理的时间势差本源理论
人工智能·线性代数·算法·机器学习·平面
云泽80833 分钟前
蓝桥杯算法精讲:哈夫曼编码的贪心思想与落地实现
算法·职场和发展·蓝桥杯
x_xbx39 分钟前
LeetCode:53. 最大子数组和
算法·leetcode·职场和发展
菜菜小狗的学习笔记40 分钟前
剑指Offer算法题(一)数组与矩阵
线性代数·算法·矩阵
仰泳的熊猫1 小时前
题目2269:蓝桥杯2016年第七届真题-冰雹数
开发语言·数据结构·c++·算法·蓝桥杯