![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法分析与设计
haocrossover
业精于勤而荒于嬉
展开
-
leetcode-----99恢复二叉搜索树(recoverTree)
99. 恢复二叉搜索树(JAVA实现)二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * Tr...原创 2020-04-19 21:04:46 · 252 阅读 · 0 评论 -
字符串相乘
char* multiply(char* num1, char* num2) { if(*num1=='0'||*num2=='0')return "0"; int len1=strlen(num1),len2=strlen(num2); char*res=(char*)malloc((len1+len2+1)*sizeof(char)); for(int i=0; i<le...原创 2018-10-11 01:05:26 · 114 阅读 · 0 评论 -
第一个缺失的最小正数(优化)
题目中提到线性时间和常数级的空间限制。方法1中循环中虽然出现循环,但是时间复杂度仍然是线性级别的,且空间复杂度为常数级别;方法2中采用递归思想。虽然时间复杂度满足,但是空间复杂度随着递归深入成与数组长度线性相关;方法3和方法1类似,只是方法3采用每次遇到小于数组长度n的正整数,就进行调换位置,方法1则用一个临时变量来存储。方法4是通过将正数都放后面,从第一个正数开始,将存在小于n,...原创 2018-09-27 21:34:03 · 495 阅读 · 0 评论 -
全排列(回溯法,宽度优先)
int** permute(int* nums, int numsSize, int* returnSize) { int size=1,i=numsSize,count=1,cc=0; for(;i>1;i--)size*=i; *returnSize=size; int **a=(int **)calloc(size,sizeof(int *)),**b...原创 2018-10-12 11:54:28 · 511 阅读 · 0 评论 -
全排列 II(回溯法,宽度优先)
int cmp (const void * a, const void * b){return ( *(int*)a - *(int*)b );}int** permuteUnique(int* nums, int numsSize, int* returnSize) { int size=1,i=0,count=1,d=1; qsort(nums,numsSize,sizeo...原创 2018-10-12 11:50:12 · 261 阅读 · 0 评论 -
数独 深度优先 递归实现 简单明了
#include <stdio.h>#include <stdlib.h>char s[9][9]= {{'8','.','.','.','.','.','.','.','.'},{'.','.','3','6','.','.','.','.','.'},{'.','7','.','.','9','.','2','.','.'},{'.','5','.','.',...原创 2018-09-21 21:38:57 · 719 阅读 · 0 评论 -
缺失的第一个正数(firstMissingPositive)
int firstMissingPositive(int* nums, int numsSize) { int smallest=INT_MAX; int bigest=0,i=0; for(i=0;i<numsSize;i++){ if(nums[i]<=0)continue; if(nums[i]<smallest)s...原创 2018-09-25 13:31:09 · 164 阅读 · 0 评论 -
216. 组合总和 III C语言实现(回溯法 宽度优先)
int** combinationSum3(int num, int target, int** columnSizes, int* returnSize) { int candidates[]={1,2,3,4,5,6,7,8,9}; if(target<candidates[0])return NULL; int len=200;//满n叉树的叶子数 i...原创 2018-09-04 21:53:37 · 401 阅读 · 0 评论 -
leetcode 40组合总和 II C语言实现(回溯法 宽度优先)
int cmpfunc (const void * a, const void * b){return ( *(int*)a - *(int*)b );}int** combinationSum2(int* candidates, int candidatesSize, int target, int** columnSizes, int* returnSize) { if(candi...原创 2018-09-04 21:02:22 · 493 阅读 · 0 评论 -
leetcode 39组合总和 c语言实现(回溯法 宽度优先)
int cmpfunc (const void * a, const void * b){return ( *(int*)a - *(int*)b );}int** combinationSum(int* candidates, int candidatesSize, int target, int** columnSizes, int* returnSize) { if(candid...原创 2018-09-04 18:47:12 · 965 阅读 · 3 评论