LeetCode编码基础知识

c标准库:https://www.runoob.com/cprogramming/c-standard-library-assert-h.html 

 

pow()函数: 计算a的x次方并返回给result

用法:

#include<math.h>

result = pow(a,x);

Qusetion:得出一个整数x的digit(位数)。

Example:x = 123,得digit = 3

for(i = 0;pow(10,i) < x;i++){}

digit = i;

 

struct ListNode* p, node; 

node.next = head;

p = &node;

return node->next;

以上可以创建一个空的头结点,等同于下

struct ListNode* L = (struct ListNode*)malloc(sizeof(struct ListNode));

L->next = head;

return L->next;

 

int removeElement(int* nums, int numsSize, int val){}

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝
int len = removeElement(nums, val);

// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。
for (int i = 0; i < len; i++) {
    print(nums[i]);
}

 

 

struct ListNode* fast = head;
struct ListNode* slow = head;
    while(fast != NULL && fast->next != NULL){
        slow = slow->next;
        fast = fast->next->next;
    } 

链表结点个数为奇数时,slow指向链表中间结点;

链表结点个数为偶数时,slow指向链表两个中间结点的后一个。

 

 struct ListNode h = {0, head}; //设置一个头节点
 struct ListNode* p = &h;//引用
 return h.next;//调用结构体成员变量

 

LeetCode hash表的支持

https://support.leetcode-cn.com/hc/kb/article/1194343/ 

gcc 8.2 uthash.h文档

https://troydhanson.github.io/uthash/userguide.html

 


struct ListNode* l3 = malloc(sizeof(struct ListNode));

memset(l3, 0, sizeof(struct ListNode));//只初始化一个0?

 


struct ListNode **rec = (struct ListNode **)calloc(size, sizeof(struct ListNode *));

struct ListNode **rec = malloc(size*sizeof(struct ListNode));

rec = (struct ListNode **)realloc(rec, size * sizeof(struct ListNode *));



int** nums = (int**)malloc(sizeof(int*)*rewNums);

*nums = (int*)malloc(sizeof(int)*colNums);

 

int compare(const void* a, const void* b) { 

    return *(int*)a-*(int*)b;

}

qsort(nums,n,sizeof(nums[0]), compare);

"if" "#if" "#ifndef" "#ifdef"

以#开头的都是预编译指令,就是在正式编译之前,编译器做一些预处理的工作

#if 条件语句
程序段1 //如果条件语句成立,那么就编译程序段1
#endif
程序段2//如果条件不语句成立,那么就编译程序段2

#ifndef x//先测试x是否被宏定义过
#define 程序段1 //如果x没有被宏定义过,那么就编译程序段1
#endif
程序段2 //如果x已经定义过了则编译程序段2的语句,“忽视”程序段1。

#ifdef x //先测试x是否被宏定义过
程序段1 //如果x被宏定义过,那么就编译程序段1
#endif
程序段2 //如果x没有被定义过则编译程序段2的语句,“忽视”程序段1。

if就是判断语句,不是预编译指令

char s[MaxSize]; 

int len = strlen(s);//获取字符数组长度

int t = atoi(s);//字符串转整数

strcmp(s1,s2);//比较字符串s1,s2返回bool型

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值