数据结构与算法
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 · 258 阅读 · 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 · 166 阅读 · 0 评论 -
数独 深度优先 递归实现 简单明了
#include <stdio.h>#include <stdlib.h>char s[9][9]= {{'8','.','.','.','.','.','.','.','.'},{'.','.','3','6','.','.','.','.','.'},{'.','7','.','.','9','.','2','.','.'},{'.','5','.','.',...原创 2018-09-21 21:38:57 · 722 阅读 · 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 · 263 阅读 · 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 · 516 阅读 · 0 评论 -
第一个缺失的最小正数(优化)
题目中提到线性时间和常数级的空间限制。方法1中循环中虽然出现循环,但是时间复杂度仍然是线性级别的,且空间复杂度为常数级别;方法2中采用递归思想。虽然时间复杂度满足,但是空间复杂度随着递归深入成与数组长度线性相关;方法3和方法1类似,只是方法3采用每次遇到小于数组长度n的正整数,就进行调换位置,方法1则用一个临时变量来存储。方法4是通过将正数都放后面,从第一个正数开始,将存在小于n,...原创 2018-09-27 21:34:03 · 501 阅读 · 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 · 116 阅读 · 0 评论