随笔分类 - C、数据结构与算法
摘要:什么是回调函数?一直都比较模糊,似懂非懂,今天就来总结一下! 首先从一个链表查找函数开始,程序如下: Node * search_list( Node *node, const int *value ) { while( node != NULL ) { if( node->value == val
阅读全文
摘要:本篇文章总结了LeetCode题目53 最大子序列和中使用的分治算法 53. 最大子序和 题目类型 分治 动态规划 做题总结 分治算法:实现方式:循环递归 在每一层递归上都有三个步骤: 分解:将原问题分解为若干个规模较小、相对独立、与原问题形式相同的子问题 解决:若子问题规模较小且容易解决时,则直接
阅读全文
摘要:本篇文章是对LeetCode题目 69.x的平方根的总结,主要总结了使用二分法时中位数mid的选取方法。 69. x 的平方根 题目类型 二分法 做题总结 注意作乘法时一定要考虑数值是否过大导致溢出,从而选取合适大小的数据类型。 还要注意这里二分法取的是右中位数,即mid=right - (righ
阅读全文
摘要:本篇文章总结了LeetCode 75题的解题过程中遇到的问题,主要包括:函数内使用sizeof( 数组指针形参 )来计算数组大小错误的问题、 75. 颜色分类(荷兰国旗问题) 题目类型 排序 做题总结 使用插入排序时遇到的问题。 void InsertSort( int *a, int n ) {
阅读全文
摘要:本篇文章主要总结了LeetCode经典题 #215数组中第K个最大元素,主要总结了该题的三种解法:快速选择、优先队列、二分法 215. 数组中的第K个最大元素 题目类型 排序 做题总结 二分法 本题类似于#378.有序矩阵中第K小的元素,都可以使用二分法的特殊用法——在未排序的数组中进行查找。具体思
阅读全文
摘要:本篇文章总结了在做LeetCode题目645时遇到的问题,主要是可变长数组的初始化问题。 645. 错误的集合 题目类型 数组 做题总结 每一次遍历可以同时做多件事情,例如本题在查找重复的时候也同时查找丢失,即for循环中是if-if-if类型,而不是if-elseif-else类型。 一套算法可能
阅读全文
摘要:本篇文章基于LeetCode 题目#485总结,主要是记录了if嵌套if时不加花括号引起的bug 485. 最大连续1的个数 题目类型 数组 做题总结 关于if语句与花括号的省略:如下的遍历写法是比较简洁的: for( i = 0; i < n; ++i ) if( nums[i] == 0 ) +
阅读全文
摘要:本篇文章是在做LeetCode 题目#566时总结的,主要进一步学习了二维数组及指针的指针用法。 566. 重塑矩阵 题目类型 数组 做题总结 1. 如何通过动态内存分配的方式构建一个二维数组空间?:首先根据行数r动态分配r个int *类型的空间,然后再为每一行分配列数c个int类型的空间,具体实现
阅读全文
摘要:无论是一维数组还是多维数组,其初始化的规则是相同的: 1.对于函数外声明的数组,如果不初始化,则默认所有元素都为0 2.对于函数内部声明的数组,如果不初始化,则各元素的默认值是随机的;如果想初始化整个数组,可以用花括号{}依次为每一个元素赋值,如果花括号中值的数量超出数组容量,则报错;如果花括号中值
阅读全文
摘要:本篇文章是在做LeetCode 题目#524时总结的,主要弥补了二维数组、多个字符串的存储方法、qsort的使用三方面的知识。 #524. 通过删除字母匹配到字典里最长单词 题目类型 双指针 做题总结 1. 关于二维数组的用法 二维数组的概念:二维数组和一维数组差不多,只是其数组元素为一维数组,其实
阅读全文

浙公网安备 33010602011771号