leetcode刷题
__小小酥__
这个作者很懒,什么都没留下…
展开
-
leetcode 笔记No.14
leetcode No.14 最长公共前缀 内存占用67%, 后续需要再优化 char * longestCommonPrefix(char ** strs, int strsSize){ int flag = 1; int i , j; //printf("strsSize = %d\n", strsSize); if (strsSize == 0 || strs == NULL) { return NULL; } for (i =原创 2022-03-16 16:22:57 · 119 阅读 · 0 评论 -
leetcode 笔记No.13
leetcode No.13 罗马数字转整数 思路(官方题解): 通常情况下,罗马数字中小的数字在大的数字的右边。若输入的字符串满足该情况,那么可以将每个字符视作一个单独的值,累加每个字符对应的数值即可。 例如 XXVII 可视作 X+X+V+I+I=10+10+5+1+1=27。 若存在小的数字在大的数字的左边的情况,根据规则需要减去小的数字。对于这种情况,我们也可以将每个字符视作一个单独的值,若一个数字右侧的数字比它大,则将该数字的符号取反。 int getValue(char ch) {原创 2022-03-16 15:39:51 · 64 阅读 · 0 评论 -
leetcode 笔记No.12
leetcode No.12 整数转罗马数字 今日刷题: 从结果来看,内存占用排名较低,后续再想想其他方便的方法。 char * intToRoman(int num){ const int values[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; const char* symbols[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V",原创 2022-03-16 00:27:34 · 73 阅读 · 0 评论 -
leetcode 笔记No.5
leetcode No.5 最长回文子串 自己只会暴力破解,贴两个题解的代码,当作整理 三个指针,一个左移的指针,一个右移指针,一个中心指针一直右移 1、初始化 r = l = index 2、把index和r+1的位置进行比较如果相等,则把r++,同时中心指针也右移 //如abbbbc的情况 3、无法再右移了,则进行由中心像两侧扩展,l-1,r+1进行对比判断,知道不成立为止。 4、记录最大值对应的起始地址和大小。 char * longestPalindrome(char * s){ int l原创 2022-03-15 01:49:19 · 543 阅读 · 0 评论 -
leetcode 笔记No.21
leetcode 笔记No.2121. 合并两个有序链表分析题解注意 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 数据类型如题定义: /** * Definition for singly-linked list. * struct ListNode { * int val;原创 2020-11-05 20:39:40 · 83 阅读 · 0 评论 -
leetcode 笔记No.7
7. 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 注意 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 思路 通过字符串,但是需要大量库函数 数学方法 通过循环将数字x的每一位拆开,在计算新值时每一步都判断是否溢出。 溢出条件有两个,一个是大于整数最大值INT_MAX,另一个是小于整数最小值INT_MIN,设当前计算结果为result,下一位为temp。 从re原创 2020-10-04 22:21:26 · 319 阅读 · 0 评论