
c语言
alieza
这个作者很懒,什么都没留下…
展开
-
【练习题】三数之和(有序数组)
【练习题】三数之和(有序数组)总体思路:将求三数和的问题变成two_sum(求两数之和)题目:给定一个从小到大排列的有序数组,在数组中选三个下标不同的元素使得他们的和等于给定的target值实现three_sum函数,传入的nums是数组,length是元素个数,target表示三数值和。int* three_sum(int *nums, int length, int targe...原创 2019-04-03 15:11:32 · 894 阅读 · 0 评论 -
【练习题】求第k小数(有序双数组)
题目:两个升序等长数组num1和num2,找出两个数组中所有元素里的第k小的数,两个数组长度均为n,且n >= k >= 1,写出find_kth_number返回第k小的数组思路一:归并优化O(k)使用归并排序的合并方法:步骤:1、两个指针p1,p2分别指向num1和num2的头2、若num1[p1] <= num2[p2]; p1++;反之,p2++3、whil...原创 2019-03-27 09:07:26 · 387 阅读 · 0 评论 -
【练习题】杨氏矩阵查找
杨氏矩阵特点:矩阵从左到右和从上到下严格统一有序(统一递增或递减)【思维拓展】:杨氏矩阵相当于二叉排序树,左子树都比根节点小,右子树都比根节点大。以矩阵统一递增为例,二叉排序树转换成矩阵就是左子树在左边,右子树在下面,根节点就是指针当前所指向的数字。题目:写出函数find_target,判断一个数字target是否在一个n * m的二维矩阵中矩阵性质如下:矩阵的每一行都是从左向右升...原创 2019-03-26 15:29:58 · 235 阅读 · 0 评论 -
【练习题】二分法
传统二分特点:在一个有序、无重复元素的数组中找出某个关键字二分查找步骤:循环的条件是:left <= right1、用三个指针left、mid、right分别指向数组头、中间、尾。left与right之间是待查找区2、在待查找区间中,如果数组中间位置mid指向的值等于目标值,则表示已找到目标值3、 否则: ①. 如果数组中间位置mid指向的值小于目标值,则更新待查找区的...原创 2019-03-15 14:35:00 · 1166 阅读 · 0 评论 -
【练习题】two_sum
题目:给定一组排好序的升序数组numbers,保证数组中没有重复出现的数字,从数组中找到两个数,这两个数相加的和等于target,写出get_tow_sum,返回这两个数的下标(下标从0开始),较小的下标在前,保证存在唯一的解。int* get_two_sum(int *numbers, int length, int target) { int *ans = (int *)malloc(s...原创 2019-03-15 14:32:40 · 174 阅读 · 0 评论 -
递归实现双数组字典树AC⾃动机
递归实现双数组字典树AC⾃动机普通AC⾃动机的递归实现过程void build_ac(Node *node) {/* 根节点的⽗亲 == NULL */ if (node == NULL) return ;//递归出⼝:当node为空,返回./* 因为该递归思想是深度优先搜索进⾏ac⾃动机的创建,且ac⾃动机的失败指针在建⽴的过程中必须得先将⽗亲节点的失败指针确定好后才可建⽴孩⼦节点...原创 2019-02-22 15:04:38 · 222 阅读 · 0 评论 -
#关于宏定义
关于宏定义宏定义中#和##的使用.#的功能是将#后面的参数进行字符串化操作#include <stdio.h>#define P(func1, func2) { \ printf("%s = %d\n", #func1, func2); \}int main() { P(haha, 4); return 0;}/*运行结果:haha = 4...原创 2018-10-24 09:47:52 · 132 阅读 · 0 评论