自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SFFS

practice makes perfect

原创 Leetcode-237.删除链表中的节点-C语言

/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */void deleteNode(struct ListNode* node) { struct ListNode *p = node, *last=NULL; if(!p) return; while(p->next) {

2020-05-09 08:36:29 75

原创 LeetCode-202. 快乐数-C语言

bool ishappy(int n, int *cnt){ (*cnt)++;/* cnt to control the depth of callstack, max is 40 */ if((*cnt) >= 40) { return false; } if(n == 1) return true; int tmp=0; ...

2020-04-30 08:52:44 74

原创 LeetCode-258. 各位相加-C语言

int addDigits(int num){ if(num > 9) return num%9 ? num%9 : 9; return num;}int addDigits(int num){ int tmp, cnt; while(num >=10) { tmp = num; cnt = 0;...

2020-04-29 21:40:52 48

原创 leetcode-905. 按奇偶排序数组-C语言

int* sortArrayByParity(int* A, int ASize, int* returnSize){ int *ret = (int *)malloc(sizeof(int) * ASize); int index = 0, i; for(i=0; i<ASize; i++){ if(A[i] % 2 == 0){ ...

2019-07-07 17:46:50 162

原创 leetcode-559. N叉树的最大深度-C语言

class Solution {public: int max = 0; void get(Node *node, int dep){ int i; if(!node->children.size() && dep > max) { max = dep; } ...

2019-07-07 17:42:53 112

原创 leetcode-80. 删除排序数组中的重复项 II-C语言

int removeDuplicates(int* arr, int len){ int i, index = 0, cnt = 0, last = INT_MAX; for(i=0; i<len; i++){ if(arr[i] != last){ last = arr[i]; cnt = 1;...

2019-07-07 16:45:28 115

原创 leetcode-450. 删除二叉搜索树中的节点-C语言

typedef struct TreeNode Node;Node *find_max(Node *node){ while(node->right) { node = node->right; } return node;}Node *delete_max(Node *node){ if(!node->right) {...

2019-07-07 16:39:46 90

原创 leetcode-31. 下一个排列-C语言

int cmp(int *a, int *b) { return *a - *b;}int find(int *arr, int len, int index) { int i = index + 1, min = INT_MAX, ret = -1; while(i<len) { if(arr[i] > arr[index] &&...

2019-07-06 16:34:47 78

原创 leetcode-933. 最近的请求次数-C语言

typedef struct { int *arr; int head; int rear;} RecentCounter;#define LEN 0xffffRecentCounter* recentCounterCreate() { RecentCounter* obj = (RecentCounter* )malloc(sizeof(Rece...

2019-07-01 14:11:02 159

原创 leetcode-557. 反转字符串中的单词 III-C语言

inline void swap(char *x, char *y) { char a = *x; *x = *y; *y = a;}inline void rever(char *s, int start, int end) { int i = start, j = end; while(i<j) { swap(&s[i...

2019-07-01 10:35:11 101

原创 leetcode-541. 反转字符串 II-C语言

#define swap(x, y){ \__typeof(x) c = x; x = y; y = c; \}char * reverseStr(char * s, int K){ int len = strlen(s); int i=0, j, k, left; char *ret = s; while(len > 0) { ...

2019-07-01 10:18:06 65

原创 leetcode-43. 字符串相乘-C语言

#define swap(a, b){\ __typeof(a) c=a;\ a=b,b=c;\}void reverse(char *s, int len){ int i =0, j= len-1; while(i<j){ swap(s[i], s[j]); i++;j--; }}char * mult...

2019-07-01 09:27:30 201

原创 leetcode-509. 斐波那契数-C原因

int fib(int N){ if(N<=1) return N; return fib(N-1) + fib(N-2);}

2019-06-27 20:53:08 60

原创 leetcode-476. 数字的补数-C语言

int findComplement(int n){ int ret = 0; unsigned m = ~n, i=0; while(n){ i++; n >>= 1; } m <<= (32-i); m >>= (32-i); retur...

2019-06-27 20:50:07 52

原创 leetcode-405. 数字转换为十六进制数-C语言

char get_char(int i){ if(i<10) return i+'0'; return i-10+'a';}void swap(char *a, char *b){ char c = *a; *a = *b; *b = c;}void reverse(char *s){ int i=0, j=strle...

2019-06-27 20:39:04 171

原创 leetcode-389. 找不同-C语言

char findTheDifference(char * s, char * t){ long long i, tb[128]; memset(tb, 0, sizeof(tb)); i=0; while(s[i]){ tb[s[i]]++; i++; } i=0; whil...

2019-06-27 19:52:30 116

原创 leetcode-387. 字符串中的第一个唯一字符-C语言

int firstUniqChar(char * s){ int i; int tb[256]; memset(tb,0, sizeof(tb)); for(i=0; s[i]; i++){ tb[s[i]]++; } for(i=0; s[i]; i++){ if(tb[s[i]] == 1)...

2019-06-27 19:48:21 174

原创 leetcode-383.救赎金-C语言

bool canConstruct(char * r, char * m){ int tb2[256], i; memset(tb2, 0, sizeof(int) * 256); i = 0; while(m[i]){ tb2[m[i]]++; i++; } i = 0; whi...

2019-06-27 19:45:49 107

原创 leetcode-268. 缺失数字-C语言

/* * 方法一:标记法,将对应arr[i]位置的元素标记为相反数,注意当arr[i]==len时的情况,用一个变量记录这种情况 * 注意当arr[i] == 0时候的情况,用一个变量记录这种情况。 */int missingNumber_bak(int* arr, int len){ int i, arrlen=1, index0=INT_MAX, index; ...

2019-06-27 14:31:20 121

原创 leetcode-231. 2的幂-C语言

/* 算法思想: 递归 */bool isPowerOfTwo(int n){ if(n==1) return true; if(n<1 || (n&0x1)) return false; return isPowerOfTwo(n/2); }

2019-06-27 13:46:40 98

原创 leetcode-171. Excel表列序号-C语言

int titleToNumber(char * s){ int cnt = 0; int j = strlen(s)-1, i=0; while(i<=j){ cnt *= 26; cnt += s[i] - 'A' + 1; //printf("cnt=%d\n", cnt); ...

2019-06-27 11:31:51 101

原创 leetcode-122. 买卖股票的最佳时机 II-C语言

int maxProfit(int* a, int len){ int i,cnt=0; if(len <= 1) return 0; for(i=1; i<len; i++){ if(a[i] > a[i-1]){ cnt += a[i] - a[i-1]; } }...

2019-06-27 11:13:18 146

原创 leetcode-990. 等式方程的可满足性-C语言

/* * 算法思想:并查集 * 1. 将相等的元素添加到一个并查集中; * 2. 将不等的式子,看两端元素是否在前述并查集中,如果在则返回false。 */int find(int *arr, int i){ return i == arr[i] ? i : (arr[i] = find(arr, arr[i]));}void un(int *arr, int i, in...

2019-06-26 17:16:27 197

原创 leetcode-684.冗余连接-C语言

/** * 算法思想: 并查集 */int find(int *arr , int i){ return i==arr[i] ? i : (arr[i] = find(arr, arr[i]));}void un(int *arr, int i, int j){ int x = find(arr, i); int y = find(arr, j); ...

2019-06-26 16:19:46 428

原创 leetcode-547. 朋友圈-C语言

/* * 算法思想: 并查集 * */int find(int *arr, int i){ return i==arr[i] ? i : (arr[i] = find(arr, arr[i]));}void un(int *arr, int i, int j){ int x = find(arr, i); int y = find(arr, j); ...

2019-06-26 15:39:00 705

原创 leetcode-947. 移除最多的同行或同列石头-C语言

/* * 算法思想:并查集 * 1. 遍历数组,边遍历,边和前边的元素比较; * 2. 如果属于同一类(x或者y相等),则将当前元素归为前面对应元素的一类; * 3. 查看并查集中有几类元素,共有cnt类元素; * 4. 结果为总元素数-cnt,因为每类最后一个没法移除。 */int find(int *arr, int i){ return i == arr[i] ? i...

2019-06-26 15:38:29 42

原创 leetcode-947. 移除最多的同行或同列石头-C语言

/* * 算法思想:并查集 * 1. 遍历数组,边遍历,边和前边的元素比较; * 2. 如果属于同一类(x或者y相等),则将当前元素归为前面对应元素的一类; * 3. 查看并查集中有几类元素,共有cnt类元素; * 4. 结果为总元素数-cnt,因为每类最后一个没法移除。 */int find(int *arr, int i){ return i == arr[i] ? i...

2019-06-26 14:12:40 201

原创 leetcode-528. 按权重随机选择-C语言

typedef struct { int *arr; int len; int cnt;} Solution;Solution* solutionCreate(int* w, int wSize) { Solution* obj = (Solution*)malloc(sizeof(Solution)); obj->arr = w; o...

2019-06-25 20:59:52 132

原创 leetcode-704. 二分查找-C语言

int search(int* arr, int len, int t){ int i=0, j=len-1; int mid; while(i<j){ mid = (i+j)/2; if(arr[mid] < t){ i = mid+1; }else if(arr[mid]...

2019-06-25 19:07:37 79

原创 leetcode-852. 山脉数组的峰顶索引-C语言

/* * 算法思想: 二分法 */int peakIndexInMountainArray(int* A, int ASize){ int i=0, j=ASize-1; int mid; while(i<=j){ mid = i+(j-i) / 2; if(j == i) return m...

2019-06-25 19:06:59 55

原创 leetcode-1094. 拼车-C语言

bool carPooling(int** arr, int len, int* tripsColSize, int capacity){ long long cnt[1004]; int i, j; memset(cnt, 0, sizeof(cnt)); for(i=0; i<len; i++){ for(j...

2019-06-25 19:06:15 145

原创 leetcode-1093. 大样本统计-C语言

/** * Note: The returned array must be malloced, assume caller calls free(). */typedef struct n_t{ int val; int cnt;} Node;int cmp(Node *a, Node *b){ return a->val - b-&g...

2019-06-25 19:05:44 64

原创 leetcode-441. 排列硬币-C语言

/* * 算法思想:二分法 */long long get(long long n){ return n*(n+1)/2;}int arrangeCoins(int n){ int i=0, j = n, mid; long long tmp1; while(i<j) { mid = i+(j-i)/2; ...

2019-06-25 18:58:17 90

原创 leetcode-744. 寻找比目标字母大的最小字母-C语言

/** * Note: The returned array must be malloced, assume caller calls free(). */typedef struct n_t{ int val; int cnt;} Node;int cmp(Node *a, Node *b){ return a->val - b-&g...

2019-06-25 18:49:23 99

原创 leetcode-327. 区间和的个数-C语言

/** 算法思想* 使用归并排序的算法思想* 1. 使用sums[i]数组放0->i-1的累加和,sums[0] = 0;* 2. 对于任意的i!=j, lower <= sums[i]-sums[j] <= upper满足条件,则为一种可能的序列区间;* 3. 对于有序的数组,取符合条件的返回,可使用双指针的方法。**/void print(long lon...

2019-06-20 19:30:32 280

原创 leetcode-922. 按奇偶排序数组 II-C语言

int* sortArrayByParityII(int* A, int ASize, int* returnSize){ int *ret = (int *)malloc(sizeof(int)* ASize); int i, j, k; j = 0; k = 1; for(i=0; i<ASize; i++){ if(!(A[i]...

2019-06-20 14:07:23 70

原创 leetcode-1030. 距离顺序排列矩阵单元格-C语言

int cmp(int **x, int **y) { int *a = *x; int *b = *y; return abs(a[0]-a[2]) + abs(a[1]-a[3]) - (abs(b[0]-b[2]) + abs(b[1]-b[3]) );} int** allCellsDistOrder(int R, int C, int r...

2019-06-20 13:57:03 189

原创 leetcode-219. 存在重复元素 II-C语言

#define L 0x1ffftypedef struct hnode{ int key; int index; struct hnode *next;} HNode;void hash_init(HNode ***htb, int len){ int i; *htb = (HNode **)malloc(sizeof(HNode*) * len...

2019-06-20 11:46:08 231

原创 leetcode-594. 最长和谐子序列-C语言

int cmp(int *a, int *b){ if(*a < *b){ return -1; }else if(*a > *b){ return 1; } return 0;}typedef struct nd{ int val; int cnt;} Node;#define LEN 0xf...

2019-06-19 20:41:45 97

原创 leetcode-187. 重复的DNA序列-C语言

/** * 算法思想: * 遍历所有以10为长度的字符串,边遍历边添加进哈希表,如果哈希表中存在,并且添加进结果的标志还未置位, * 则将其添加进结果(注意cnt用来标识是否已经添加进结果); * 如果哈希表中不存在,将当前遍历的字符串添加到哈希表中; * 哈希值的计算方法要尽量将其均匀分布在哈希表中,否则容易超时。 */#define L 0x1ffffint get(char...

2019-06-19 20:06:55 438

提示
确定要删除当前文章?
取消 删除