随笔分类 - 数据结构与算法
摘要:根据建表语句解析表结构,并将表结构解析为JSON。根据MYSQL的建表语句, 建表语句: CREATE TABLE `TEST` ( `ID` varchar(56) NOT NULL, `CREAETE_TIME` datetime NOT NULL, `IS_DEL` varchar(6) NO
阅读全文
摘要:解法主要有两项工作: 1、处理作用域(栈或递归); 2、顺序处理逻辑:(1)根据分隔符将语句拆解为 token;(2)根据关键字的运算逻辑定义状态,设计自动机;(3)从左至右逐个解析 token ,将 token 压入自动机 程序处理时,先处理会引起自动机状态变更的关键字或字符,再处理 token,
阅读全文
摘要:倒排索引的简单 JAVA 实现,当玩具其实都很粗糙,简单实现下原理: public class IntertedIndex { // 倒排索引 private Map<String, List<String>> indexMap; // 关键词计数 private Map<String, Integ
阅读全文
摘要:简单题,溜溜手。 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
阅读全文
摘要:JAVA: public final int[] topKFrequent(int[] nums, int k) { Item[] arr = this.initItemArr(nums); HeapSort heap = new HeapSort(arr); int[] reArr = new i
阅读全文