07 2020 档案
剑指offer21.调整数组顺序使奇数位于偶数前面
摘要:方法一:一般方法: 代码如下: 1 int* exchange(int* nums, int numsSize, int* returnSize){ 2 int *new=(int *)malloc(sizeof(int)*numsSize);//定义一个新数组用来存放调整后的数组 3 int in
阅读全文
二进制中1的个数
摘要:1、方法一: 逐位判断; 作者:jyd链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/solution/mian-shi-ti-15-er-jin-zhi-zhong-1de-ge-shu-wei-yun/来源
阅读全文
5457. 和为奇数的子数组数目
摘要:1 int numOfSubarrays(int* arr, int arrSize){ 2 int i,j,k,n=0; 3 // long a[arrSize+1]; 4 int index=0; 5 while(n <= arrSize){//当子数组长度等于原数组长度说明所有子数组已经遍历完
阅读全文
二叉树深度--剑指offer。三种方法——BFS、DFS
摘要:1、后序遍历(DFS) 树的后序遍历/深度优先搜索往往利用递归和栈。 算法解析: 1、终止条件:当root空,说明越过了叶节点,因此返回深度0 2、递推:实质上是对树做后序遍历 1、计算左子树深度 2、计算右子树深度 3、返回值:返回的树的深度是左子树和右子树二者中最大的。同时要加上根节点这一层。
阅读全文
换酒问题-----leetcode5464
摘要:int numWaterBottles(int numBottles, int numExchange){ int sum=0,a=0,a1=0; //sum记录换的总的酒的个数 //a表示每次换酒后的剩余的瓶数 //a1表示剩余的a的和换酒后剩余的瓶数 if(numBottles<numExcha
阅读全文
剑指offer32-III从上到下打印二叉树
摘要:此题和之前的剑指offer32-I、II.从上到下打印二叉树大致相同在BFS的基础上只是添加了一个重排序的过程。具体代码如下: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * st
阅读全文
*p++,p++,*(p++)、(*p)++、(*p)[n],*p[n]的一些资料收集
摘要:p++、*p++、*(p++)是在p所指向的地址上加1。 1 //*(p++)等同于*p++ 2 #include<stdio.h> 3 int main(void) 4 { 5 int *p; 6 int a[5]={1,4,3,2,5}; 7 p=a; 8 printf("首地址p是%p\n",
阅读全文
剑指offer32-1,从上到下打印二叉树
摘要:解题思路: 题目要求的二叉树的 从上至下 打印(即按层打印),又称为二叉树的 广度优先搜索(BFS)。 BFS 通常借助 队列 的先入先出特性来实现。 算法流程:特例处理: 当树的根节点为空,则直接返回空列表 [] ;初始化: 打印结果列表 res = [] ,包含根节点的队列 queue = [r
阅读全文
链表p->next=q->next,q->next=p,q=p;的一些解释
摘要:假设刚开始p指向t,q指向了b。如下图所示 首先p->next=q->next: 意思是让p节点指向q节点的下一个数据,现在p,q的下一个节点相同,都为b。 然后,q->next=p,就是将q的下一个节点变为p,就相当于 在q节点后面加上p节点。 关于p->next=q->next的进一步解释: 在
阅读全文
剑指offer28.对称的二叉树
摘要:解题思路:首先,将原二叉树进行镜像处理。得到一个镜像二叉树:(镜像二叉树的求解见https://www.cnblogs.com/sbb-first-blog/p/13289799.html)。 其次,对镜像后的二叉树进行比较,如果二者相同则返回true,否则返回false。 终止条件:1、如果镜像和
阅读全文
剑指offer27.二叉树镜像
摘要:方法:递归: 根据二叉树镜像的定义,考虑提柜遍历二叉树,交换每个节点,即可生成二叉树的镜像。递归解析: 1、终止条件:当节点root为空时(即越过叶节点)则返回null: 2、递推工作: 1.初始化节点node,用于存储镜像的二叉树的节点 2.开启递归node->left=mirrorTree(ro
阅读全文
二叉树的层序遍历-102
摘要:方法一:本文采用BFS进行层序遍历,具体分析参见https://www.cnblogs.com/sbb-first-blog/p/13259728.html 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 *
阅读全文
剑指offer 06 从尾到头打印链表
摘要:方法一:运用栈: 根据栈的特点是后进先出,即最后压入栈的元素最先得到,考虑到栈的这一特点,使用栈将链表的元素顺序倒置。从链表头节点开始,依次将每个节点压入栈内,然后依次弹出栈内的元素并存储到数组中。 创建一个栈,用于存储链表的节点 创建一个指针,初始时指向链表的头节点 当指针指向的元素非空时,重复下
阅读全文
替换空格:剑指offer05
摘要:此题为简单题,较为好理解,主要是将' '替换'%20',刚开始自己以为可以自己当读取到字符串为空时就可直接置换为‘%20’但发现结果是只能显示‘%20’的部分。错误结果如下: 1 char* replaceSpace(char* s){ 2 int n=strlen(s); 3 int i; 4 /
阅读全文
面试题16.11.跳水板----leetcode
摘要:本题可以有多种解法:本文采用动态规划的方法来处理。 状态方程: 首先本题的状态方程可以写为:dp[i]=dp[i-1]+longer-shorter; 边界条件: 其次,本题的边界条件有两个:即当k=0时和shorter等于longer时。当k=0时,返回的结果为空,当shorter=longer时
阅读全文
找出数组中重复的数字--剑指offer
摘要:本道题是较为简单的数组问题,只需要找到重复的数字,并不是找到所有的数字。一开始想着遍历完所有的数组元素,但会出现超出时间设置。 1 int findRepeatNumber(int* nums, int numsSize){ 2 int i,j,k=0; 3 int s[numsSize]; 4 /
阅读全文
BFS(广度优先搜索):层序遍历和最短路径
摘要:作者:fuxuemingzhu链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/solution/tao-mo-ban-bfs-he-dfs-du-ke-yi-jie-jue-by-fuxuemin/来源:力扣
阅读全文
网格类问题的DFS遍历方法
摘要:网格问题的基本概念 我们首先明确一下岛屿问题中的网格结构是如何定义的,以方便我们后面的讨论。 网格问题是由 m*n个小方格组成一个网格,每个小方格与其上下左右四个方格认为是相邻的,要在这样的网格上进行某种搜索。 岛屿问题是一类典型的网格问题。每个格子中的数字可能是 0 或者 1。我们把数字为 0 的
阅读全文
路径总和--leetcode112
摘要:方法1:递归 /** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ bool hasPath
阅读全文
不同路径--leetcode62
摘要:int uniquePaths(int m, int n){ int i,j; int dp[m][n]; memset(dp,0,sizeof(dp)); for(i=0;i<m;i++) { for(j=0;j<n;j++) { if(i==0&&j>0)//边界条件 { dp[i][j]=dp
阅读全文
通配符匹配_leetcode44
摘要:bool isMatch(char* s, char* p) { int m=strlen(s); int n=strlen(p); int dp[m+1][n+1]; memset(dp,0,sizeof(dp)); dp[0][0]=true; int i,j; //对边界问题进行处理 for(
阅读全文
所有蚂蚁掉下来前的最后一刻
摘要:有一块木板,长度为 n 个 单位 。一些蚂蚁在木板上移动,每只蚂蚁都以 每秒一个单位 的速度移动。其中,一部分蚂蚁向 左 移动,其他蚂蚁向 右 移动。 当两只向 不同 方向移动的蚂蚁在某个点相遇时,它们会同时改变移动方向并继续移动。假设更改方向不会花费任何额外时间。 而当蚂蚁在某一时刻 t 到达木板
阅读全文
最长有效括号
摘要:#define fmax(a,b) ((a)>(b)?(a):(b)) int longestValidParentheses(char* s) { int maxans=0,n=strlen(s); if(n==0) { return 0; } int dp[n]; memset(dp,0,siz
阅读全文
n的第k个因子--leetcode1492
摘要:给你两个正整数 n 和 k 。 如果正整数 i 满足 n % i == 0 ,那么我们就说正整数 i 是整数 n 的因子。 考虑整数 n 的所有因子,将它们 升序排列 。请你返回第 k 个因子。如果 n 的因子数少于 k ,请你返回 -1 。 示例 1: 输入:n = 12, k = 3输出:3解释
阅读全文
删掉一个元素以后全为1的最长子数组。
摘要:给你一个二进制数组 nums ,你需要从中删掉一个元素。 请你在删掉元素的结果数组中,返回最长的且只包含 1 的非空子数组的长度。 如果不存在这样的子数组,请返回 0 。 提示 1: 输入:nums = [1,1,0,1]输出:3解释:删掉位置 2 的数后,[1,1,1] 包含 3 个 1 。示例
阅读全文