随笔分类 - C
C语言
摘要:需要注意图中存在环路。 JAVA: public final Node cloneGraph(Node node) { return deepCopy(node, new HashMap<Integer, Node>()); } private Node deepCopy(Node node, Ha
阅读全文
摘要:因为数组是有序的,可以递归的选取根节点构建子树。 JAVA: public final TreeNode sortedArrayToBST(int[] nums) { if (null == nums) return null; return this.build(nums, 0, nums.len
阅读全文
摘要:简单题,溜溜手。 C: #include <stdlib.h> #include <string.h> void allocation(int *givenArr, int currentCandie, int currentPeople, int candies, int num_people)
阅读全文
摘要:C: // 队列与栈 struct Node { int val; int depth; struct Node *next; struct Node *pre; }; struct Queue { struct Node *head; struct Node *last; int len; };
阅读全文
摘要:先计算最长公共子序列,然后以最长公共子序列为 base ,与两个原序列合并。 dp 后恢复子序列的手法很关键 C: #include <stdlib.h> #include <stdio.h> #include <string.h> char *combine(char *base, char *s
阅读全文
摘要:C: #include <stdio.h> #include <stdlib.h> int dp(int *prices, int fee, int point, int hasShared, int *cache) { if (point == 0) { if (hasShared == 0) r
阅读全文
摘要:C 手写栈结构: #include <stdlib.h> #include <stdio.h> #include <string.h> #include "stdbool.h" struct Node { char val; int num; struct Node *next; struct No
阅读全文
摘要:C: #include <stdlib.h> #include <stdio.h> #include <string.h> int **reArr; int currentArr[15]; int currentArrSize; void search(int point, int **graph,
阅读全文
摘要:C: bool search(char *s1, char *s2, char *s3, int p1, int p2, int *cache) { int len1 = strlen(s1), len2 = strlen(s2), len3 = strlen(s3); if (p1 == len1
阅读全文
摘要:C: void dealLeft(int *asteroids, int size, int point) { if (point >= size) return; if (asteroids[point] >= 0) return; int left = point - 1; while (lef
阅读全文
摘要:c: #include "stdbool.h" #include <string.h> int num = 0; bool palind(char *s, int left, int right) { if (left == right || left == right + 1) return tr
阅读全文
摘要:利用递归的回路进行比对。 C: #include "stdbool.h" #include <string.h> struct ListNode { int val; struct ListNode *next; }; struct ListNode *rightNode; bool isPal(s
阅读全文
摘要:C: void insert(int *B, int size, int val) { if (size == 1) B[0] = val; else { for (int i = 1; i < size; i++) { if (val <= B[i]) { B[i - 1] = val; retu
阅读全文
摘要:C: void moveZeroes(int* nums, int numsSize){ int left = 0,right=0; while(right<numsSize){ if(nums[right]!=0){ int temp = nums[right]; nums[right] = nu
阅读全文
摘要:依然是简单题,熟悉 uthash 的使用。终于想通了,为何封装 HASH_ADD 等相关方法时,需要传入指针的指针,因为 uthash 库的实现都是写在宏中的,编译后不是函数调用,而是代码替换! C: #include "stdbool.h" #include <string.h> #include
阅读全文
摘要:简单问题,熟悉下 C 的哈希表,使用第三方库: C: typedef struct Hash { int key; UT_hash_handle hh; } Hash; int hashExit(int key, Hash **hashs) { Hash *target = NULL; HASH_F
阅读全文
摘要:C: int *level(int *pre, int rowIndex, int currLevel, int *returnSize) { int currSize = *returnSize + 1; int *currList = (int *)malloc(sizeof(int) * cu
阅读全文
摘要:C: int getMinInRow(int **matrix, int rowSize, int rowPoint) { int minPoint = 0, minValue = matrix[rowPoint][0]; for (int i = 1; i < rowSize; i++) { if
阅读全文