LeetCodeコードの基礎知識
c標準ライブラリ:https://www.runoob.com/cprogramming/c-standard-library-assert-h.html
int removeElement(int* nums, int numsSize, int val){}
なぜ返される数値は整数ですが、出力される答えは配列ですか?
入力配列は「参照」で渡されます.これは、関数で入力配列を変更することが呼び出し元に表示されることを意味します.
内部操作は次のように想像できます.
LeetCode hashテーブルのサポート
https://support.leetcode-cn.com/hc/kb/article/1194343/
gcc 8.2 uthash.hドキュメント
https://troydhanson.github.io/uthash/userguide.html
"if""#if""#ifndef""#ifdef"
#で始まるのはすべてプリコンパイル命令で、正式にコンパイルする前に、コンパイラはいくつかの前処理の仕事をします#if条件文プログラムセグメント1//条件文が成立すれば、コンパイラセグメント1#endifプログラムセグメント2//条件が成立しなければ、では、コンパイラセグメント2#ifndef x//まず、xがマクロによって定義されているかどうかをテストします.#defineセグメント1//xがマクロによって定義されていない場合は、コンパイラセグメント1#endifセグメント2//xが定義されている場合は、プログラムセグメント2の文をコンパイラします.#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);//比較文字列s 1,s 2はbool型を返す
pow() : a x result
:
#include
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の文をコンパイラします.#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);//比較文字列s 1,s 2はbool型を返す