- 博客(18)
- 收藏
- 关注
原创 初级算法学习
char * longestCommonPrefix(char ** strs, int strsSize){ //最长公共前缀 //纵向扫描 int i,j; for(int i = 0;i<strsSize;i++){ for(int j = 0;j<strlen(strs[0]);j++){ //在这个for循环中 让元素呈纵向排列 二维数组 i = 0 时 j的变化...
2022-08-12 17:01:45
140
原创 初级算法学习
// 可以直接使用 s[]作为数组使用 由题目可知 只接受数字和小写字母 并要将大写字母转化为小写字母 数字的asc码为48 - 57 小写字母则为97-122 大写字母为65- 90 大写字母转化为小写字母 +32 即可 bool isPalindrome(char * s){ int i = 0; int j = 0;//i 做工作指针 j做...
2022-08-07 16:14:48
157
原创 初级算法学习
void swap(int * a,int* b){ int temp = * a; * a =* b; * b = temp ;}void rotate(int** matrix, int matrixSize, int* matrixColSize){ //首先要翻转对角线 // 1 2 3 1 4 7 // 4 5 6 ==》 2 5 8 // 7 8 9...
2022-08-03 18:19:31
137
原创 初级算法学习
拿到题以后 首先思考特殊情况的时候1 当数字为9的时候 +1 变为02 当全部位上都为9的时候 例如 9999 要使得长度加 1 然后 全部改为0 第一位改为了 1 改成 100int * plusone(int *nums,int numssize,int *retsize){ for(int i = numssize;i>=0;i--){ if(nums[i]==9){ ...
2022-07-27 20:45:19
160
原创 初级算法学习
求两数组的交集第一步 先进行排序 运用快排最好 这里使用冒泡排序第二步 创建返回数组ret(数组长度为较短的那一个数组)第三步 遍历两个数组 将相同的放在 ret数组中void bubblesort(int* nums,int sz){int temp = 0;for(int i = 0;i<sz-1;i++){ for(int j = 0;j<sz-i-1;j++){ if(nums[j]>nums[j+1]){ ...
2022-07-23 18:34:22
220
原创 初级算法学习
例子 1 2 3 4 5 6 7 k = 3 ; 操作一 4 3 2 1 5 6 7 1与4 2与3 操作二 4 3 2 1 7 6 5 7与5 操作三 5 6 7 1 2 3 4 4 --5 3--6 2-- 7 交换 出现交换 要写一个swap函数 完成交换void swap...
2022-07-21 20:41:55
78
原创 day 12
给你二叉树的根节点root和一个表示目标和的整数targetSum,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和targetSum。叶子节点是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:truebool isleef(struct TreeNode* root){ if(!root...
2021-09-04 13:57:44
65
原创 day 11
给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。struct TreeNode* DFS(int* nums, int start,int end){if(start>end)return NULL;struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));...
2021-09-02 16:26:34
76
原创 day 10
判断二叉树相同bool isSameTree(struct TreeNode* p, struct TreeNode* q){if(q==NULL&&p==NULL)//p 和q都为空 return true;else if(p==NULL||q==NULL) // 或 为空return false;else if(p->val!=q->val) //根不等return false;else return isSameTree(p->l
2021-09-01 14:56:59
63
原创 day 09
给定一个二叉树的根节点root,返回它的中序遍历。递归实现void inorder(struct TreeNode*root,int* res, int *resSize){ if(!root){ return ; } inorder(root->left,res,resSize);//递去递归遍历左子树 res[(*resSize)++]=root->val; // 归来加加 为根 inorder(root-...
2021-08-31 15:20:38
84
原创 day 8
给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。int maxSubArray(int* nums, int numsSize){ if(numsSize ==1) return nums[0]; if(numsSize == 0) ...
2021-08-30 15:23:32
189
原创 day 7
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(log n)的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例2:输入: nums = [1,3,5,6], target = 2输出: 1法一 //将数组中的数 依次与下标比较 数组中的数大于等于该下标 则返回 否则 返回iint searchInsert(int...
2021-08-29 15:01:15
80
原创 leetcode 6
实现strStr()函数。给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回-1。说明:当needle是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当needle是空字符串时我们应当返回 0 。这与 C 语言的strstr()以及 Java 的indexOf()定义相符示例 1:输入:haystack = ...
2021-08-28 22:23:46
74
原创 leetcode5
给你一个有序数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。输入:nums = [1,1,2]输出:2, nums = [1,2];int removeDuplicates(int* nums, int numsSize){ if(numsSize == 0) return 0; //双指针 快慢指针解决 int...
2021-08-28 15:30:42
169
原创 leetcode 4
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]法 1 正常遍历 连接表struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){ if(l1==NULL)/...
2021-08-26 14:54:40
453
原创 leetcode 3
给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合示例 1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true数组模拟栈 bool isValid(char * s){ int len = strlen(s); char stack[len + 1]; ...
2021-08-25 16:29:14
66
原创 leetcode day 2
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入:strs = ["flower","flow","flight"] 输出:"fl"示例 2:输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀以二维数组实现 列对比· 更改字符为\0;/*char * longestCommonPrefix(char ** strs, int strsSize){ if (strsSize...
2021-08-24 16:23:42
69
原创 leetcode1
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums1== 9 ,返回 [0, 1] 。方法1采用暴力搜索int* twoSum(int* nums, int numsSize, int ta.
2021-08-23 15:23:08
95
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人