力扣(LeetCode)刷题,简单题(第15期)
目录
第1题:将整数转换为两个无零整数的和
第2题:一周中的第几天
第3题:把二叉搜索树转换为累加树
第4题:连续字符
第5题:拿硬币
第6题:删除中间节点
第7题:猜数字
第8题:整数的各位积和之差
第9题:一维数组的动态和
第10题:统计位数为偶数的数字
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:将整数转换为两个无零整数的和
试题要求如下:
解答思路:
一对一对筛选,若一组数值某个数存在含0组成,则跳过该组。
回答(C语言):
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* getNoZeroIntegers(int n, int* returnSize){int i = 1,j = n-1;int temp = 0;int* data_buf = (int*)malloc((2)*sizeof(int));while(i<j){temp = i;while(temp % 10 != 0){temp /= 10;}if(temp != 0){i++;j--;continue;}temp = j;while(temp % 10 != 0){temp /= 10;}if(temp != 0){i++;j--;continue;} break; }data_buf[0] = i;data_buf[1] = j;*returnSize = 2;return data_buf;
}
运行效率如下所示:
第2题:一周中的第几天
试题要求如下:
解答思路:
1、明确起点1971.1.1 - "Friday", 用最小值避免符号运算;
2、计算从1971.1.1到(day, month, year)的天数, 需要注意中间年份会有闰年, 另外当前年份需要单独运算;
3、根据天数差值, 对7(一周7天)进行求余, 并且需要考虑起点是"Friday"(周五)的偏移。
回答(C语言):
char * dayOfTheWeek(int day, int month, int year){const char *s[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};if(year < 1971 || year > 2100) return NULL;int daysOfMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int sum = 0;for(int i = 1971; i < year; i ++){if(0 == i % 400 || (0 != i % 100 && 0 == i % 4)){sum += 366;}else{sum += 365;}}if(0 == year % 400 || (0 != year % 100 && 0 == year % 4)){daysOfMonth[1] = 29;}for(int i = 0; i < month - 1; i ++){sum += daysOfMonth[i];}sum += day - 1;return s[(sum + 5) % 7];
}
运行效率如下所示:
第3题:把二叉搜索树转换为累加树
试题要求如下:
解答思路:
在递归方法中,我们维护一些递归调用过程中可以访问和修改的全局变量。首先我们判断当前访问的节点是否存在,如果存在就递归右子树,递归回来的时候更新总和和当前点的值,然后递归左子树。如果我们分别正确地递归 root.right 和 root.left ,那么我们就能正确地用大于某个节点的值去更新此节点,然后才遍历比它小的值。
回答(C语言):
/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/
static void dfs(struct TreeNode* psRoot, int* pSum)
{if (NULL == psRoot){return;}dfs(psRoot->right, pSum);*pSum += psRoot->val;psRoot->val = *pSum;dfs(psRoot->left, pSum);
}struct TreeNode* convertBST(struct TreeNode* root){int sum = 0;dfs(root, &sum);return root;
}
运行效率如下所示:
第4题:连续字符
试题要求如下:
回答(C语言):
int maxPower(char * s){int i,cou = 1,num = 0,len = strlen(s)-1;char temp = s[0];for(i = 1;i <= len;i++){if(temp == s[i]){cou++;if(cou > num){num = cou;}}else{cou = 1;}temp = s[i];}if(num == 0){num = 1;}return num;
}
运行效率如下所示:
第5题:拿硬币
试题要求如下:
回答(C语言):
int minCount(int* coins, int coinsSize){int cou = 0;int temp = 0;for(int i = 0;i < coinsSize;i++){temp = coins[i];while(temp > 0){cou++;temp -= 2;}}return cou;
}
运行效率如下所示:
第6题:删除中间节点
试题要求如下:
解答思路:
将node->next指向的地址传给node,然后释放掉多余节点。
注意给出的形参不是头节点。
回答(C语言):
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/
void deleteNode(struct ListNode* node) {struct ListNode *t=node->next;*node=*t;free(t);
}
运行效率如下所示:
第7题:猜数字
试题要求如下:
解答思路:
第一次在力扣做这么简单的题,判断每一位元素是否相等。
回答(C语言):
int game(int* guess, int guessSize, int* answer, int answerSize){int cou = 0;for(int i = 0;i < guessSize;i++){if(guess[i] == answer[i]){cou++;}}return cou;
}
运行效率如下所示:
第8题:整数的各位积和之差
试题要求如下:
回答(C语言):
int subtractProductAndSum(int n){int product = 1,sum = 0;for(int i = 0,num = n;num > 0;i++){product *= num%10;sum += num%10;num /= 10;}return product-sum;
}
运行效率如下所示:
第9题:一维数组的动态和
试题要求如下:
解答思路:
求取前缀和,直接对原数组求取,不用额外分配存储空间。
回答(C语言):
/*** Note: The returned array must be malloced, assume caller calls free().*/
int *runningSum(int *nums, int numsSize, int *returnSize)
{for(int i = 1;i < numsSize;i++){nums[i] = nums[i] + nums[i-1];}*returnSize = numsSize;return nums;
}
运行效率如下所示:
第10题:统计位数为偶数的数字
试题要求如下:
回答(C语言):
int findNumbers(int* nums, int numsSize){int temp = 0,cou = 0,data = 0;for(int i = 0;i < numsSize;i++){temp = nums[i];while(temp > 0){cou++;temp /= 10;}if(cou%2 == 0){data++;}cou = 0;}return data;
}
运行效率如下所示:
力扣(LeetCode)刷题,简单题(第15期)相关推荐
- Leetcode-How-What 力扣Leetcode刷题指南
Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the intervie ...
- 力扣(LeetCode)刷题,简单+中等题(第35期)
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...
- 力扣(LeetCode)刷题,简单+中等题(第26期)
目录 第1题:字典序排数 第2题:字符串解码 第3题:查找常用字符 第4题:所有奇数长度子数组的和 第5题:长按键入 第6题:分割字符串的最大得分 第7题:回文链表 第8题:有多少小于当前数字的数字 ...
- 力扣(LeetCode)刷题,简单题(第23期)
目录 第1题:整数转换 第2题:重复的子字符串 第3题:范围求和2 第4题:反转数位 第5题:数字转换为十六进制 第6题:比较含退格的字符 第7题:三个数的最大乘积 第8题:珠玑妙算 第9题:旋转字符 ...
- 力扣(LeetCode)刷题,简单题(第5期)
目录 第1题:二进制中1的个数 第2题:打印从 1 到最大的 n 位十进制数 第3题:删除链表的节点 第4题:调整数组顺序使奇数位于偶数前面 第5题:链表中倒数第K个节点 第6题:反转链表 第7题:二 ...
- 力扣(LeetCode)刷题,简单+中等题(第34期)
目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...
- 力扣(LeetCode)刷题,简单+中等题(第33期)
目录 第1题:Z 字形变换 第2题:删除字符串中的所有相邻重复项 第3题:基本计算器 II 第4题:螺旋矩阵 第5题:螺旋矩阵 II 第6题:盛最多水的容器 第7题:删除有序数组中的重复项 II 第8 ...
- 力扣(LeetCode)刷题,简单+中等题(第32期)
目录 第1题:数组的度 第2题:托普利茨矩阵 第3题:爱生气的书店老板 第4题:翻转图像 第5题:有效的数独 第6题:无重复字符的最长子串 第7题:区域和检索 - 数组不可变 第8题:二维区域和检索 ...
- 力扣(LeetCode)刷题,简单+中等题(第31期)
目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题 ...
最新文章
- socket连接 代码
- 一个退休程序员,用高中几何方法,让百年数学难题逼近理论极限
- 分享预告:「数据安全问题」+「 股权与期权」
- Java案例-用户注册邮箱验证将邮箱激活码存入redis功能实现
- ECharts - 饼状图隐藏标示线和标示文字
- Linux怎么对文件内容trim,Linux平台下SSD的TRIM指令的最佳使用方式(不区别对待NVMe)...
- C语言中总是从main函数开始执行函数吗?
- 【蓝桥杯嵌入式】【STM32】6_ADC之LCD实时显示电压值
- [Craftor整理]PCB设计参考和建议
- 使用am instrument验证CTS问题
- wincap问题之一(丢包)
- mongodb副本集集群中节点出现recovering状态解决办法
- 探索iptables BPF模块的悲惨历程
- 《现代密码学》学习笔记——第三章 分组密码 [三]分组密码的运行模式
- 爱因斯坦说过的名言,我的一些理解(一)
- 使用腾讯云搭建一个专属自己的网络笔记本(Leanote)
- CG管理软件Shotgun改为ShotGrid
- android11墓碑机制和addr2line使用
- Linux字体关联到wine中,Wine的中文显示与字体设置
- 安卓源代码下载相关(AOSP)
热门文章
- HarmonyOS 实现跑马灯效果
- HarmonyOS UI开发 AdaptiveBoxLayout(自适应盒子布局) 的使用
- 漫谈五种IO模型(主讲IO多路复用)
- python关于字典的操作
- python基础(迭代器,生成器,装饰器)
- 2021襄阳谷城高考成绩查询,2021高考襄阳谷城县考生求助电话
- Android手机指令操作释疑
- 知识点回顾-简单的TableView单组数据展示/多组数据展示
- Axure 全局辅助线(转)
- HDU 1248 寒冰王座(全然背包:入门题)