目录

第1题:二叉搜索树的范围和

第2题:缀点成线

第3题:删除回文子序列

第4题:奇数值单元格的数目

第5题:重新排列字符串

第6题:方阵中战斗力最弱的 K 行

第7题:检查整数及其两倍数是否存在

第8题:统计最大组的数目

第9题:存在连续三个奇数的数组

第10题:替换所有的问号


力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

第1题:二叉搜索树的范围和

试题要求如下:

回答(C语言):

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/int rangeSumBST(struct TreeNode* root, int L, int R){if(root == NULL)return 0;int sum = rangeSumBST(root ->left,L,R) + rangeSumBST (root -> right,L,R);if(root ->val <= R && root ->val >= L)sum += root ->val;return sum;
}

运行效率如下所示:


第2题:缀点成线

试题要求如下:

解答思路:

直线的两点式方程(y-y2)/(y1-y2) = (x-x2)/(x1-x2),取前两个点组成直线,判断后面的点是否在直线上。

回答(C语言):

bool checkStraightLine(int** coordinates, int coordinatesSize, int* coordinatesColSize){if(coordinatesSize==2) return true;for(int i=2;i<coordinatesSize;i++){if((coordinates[i][0]-coordinates[1][0])*(coordinates[0][1]-coordinates[1][1])!=(coordinates[i][1]-coordinates[1][1])*(coordinates[0][0]-coordinates[1][0])){return false;}}return true;
}

运行效率如下所示:


第3题:删除回文子序列

试题要求如下:

解答思路:

因为是删除回文子序列(就是顺序不变的情况下,可以算隔开的字符),所以只有三种情况。

1、当字符串为空时,返回0。

2、当整字符串为回文序列时,删一次,返回1。

3、当整字符串不为回文序列时,最多是删除两次,一次删除所有a,一次删除所有b,返回2。

回答(C语言):

int removePalindromeSub(char * s){if(strlen(s) == 0)return 0;int low = 0,high = strlen(s)-1;while(low < high)if(s[low++] != s[high--])return 2;return 1;
}

运行效率如下所示:


第4题:奇数值单元格的数目

试题要求如下:

回答(C语言):

int oddCells(int n, int m, int** indices, int indicesSize, int* indicesColSize){int arr[n][m];*indicesColSize=2;int count=0;for(int i=0;i<n;i++){//数组初始化for(int j=0;j<m;j++){arr[i][j]=0;}}for(int i=0;i<indicesSize;i++){//横向加1for(int j=0;j<m;j++){arr[indices[i][0]][j]++;}    }for(int i=0;i<indicesSize;i++){//纵向加1for(int j=0;j<n;j++){arr[j][indices[i][1]]++;}    }for(int i=0;i<n;i++){//遍历奇数for(int j=0;j<m;j++){if(arr[i][j]%2==1)count++;}}   return count;
}

运行效率如下所示:


第5题:重新排列字符串

试题要求如下:

回答(C语言):

char * restoreString(char * s, int* indices, int indicesSize){char* temp = (char*)malloc(sizeof(char)*(indicesSize+1));for(int i=0; i<indicesSize; i++)temp[indices[i]] = s[i];temp[indicesSize] = '\0';return temp;
}

运行效率如下所示:


第6题:方阵中战斗力最弱的 K 行

试题要求如下:

回答(C语言):

/*** Note: The returned array must be malloced, assume caller calls free().*/int cmp(const void *a, const void *b){return *(int*)a - *(int*)b;}int* kWeakestRows(int** mat, int matSize, int* matColSize, int k, int* returnSize){int *result = (int*)malloc(matSize * sizeof(int));*returnSize = k;int *res = (int*)malloc(k * sizeof(int));for(int i = 0; i < matSize; i++){//统计1的个数result[i] = 0;for(int j = 0; j < matColSize[i]; j++){if(mat[i][j] == 1){result[i] += matSize;}else{break;}}result[i] += i;}qsort(result, matSize, sizeof(result[0]), cmp);for(int i = 0; i < k; i++){res[i] = result[i] % matSize;}return res;
}

运行效率如下所示:


第7题:检查整数及其两倍数是否存在

试题要求如下:

解答思路:

暴力破解。遍历数组,找出数组中的偶数,只有偶数才能是其它数的两倍,然后在这个条件下,给这个偶数除以2,以temp变量保存,然后再次遍历数组,找到是否数组中有值与temp相等。

回答(C语言):

bool checkIfExist(int* arr, int arrSize){int temp;for(int i = 0;i<arrSize;i++){if(arr[i]%2 == 0){temp = arr[i]/2;for(int j=0;j<arrSize;j++){if(temp == arr[j] && i!=j)return true;}}}return false;
}

运行效率如下所示:


第8题:统计最大组的数目

试题要求如下:

解答思路:

1、定义数组,并依据求出某个和值出现的次数(按照题意,定义46个数组大小就可以了);

2、一次遍历求得的数组,统计键值最大时出现的次数。

回答(C语言):

#define MAXSIZE 100int IntergerSum(int n) {int res = 0;while (n) {res += n % 10;n = n / 10;}return res;
}int countLargestGroup(int n){int arr[MAXSIZE] = {0};int cnt, val;for (int i = 1; i <= n; i++) {arr[IntergerSum(i)]++;}val = arr[1];cnt = 1;for (int i = 2; i < MAXSIZE; i++) {if (arr[i] == val) {cnt++;} else if (arr[i] > val) {val = arr[i];cnt = 1;}}return cnt;
}

运行效率如下所示:


第9题:存在连续三个奇数的数组

试题要求如下:

回答(C语言):

bool threeConsecutiveOdds(int* arr, int arrSize){for(int i=0;i<arrSize-2;i++){if(arr[i]%2==1&&arr[i+1]%2==1&&arr[i+2]%2==1)return true;}return false;
}

运行效率如下所示:


第10题:替换所有的问号

试题要求如下:

解答思路:

遍历字符串,如果当前字符为'?',用'a'开始尝试,直到找到一个字符,满足前后字符都与当前字符不同,进行替换。

回答(C语言):

char * modifyString( char * s ){for( int i = 0 ; s[i] != '\0' ; i++ ) {if( s[i] == '?' ) {char ch = 'a';while(( i > 0 && ch == s[ i - 1 ]) || (s[ i +1 ] != '\0' && ch == s[ i + 1 ])) {ch++;}s[i] = ch;}}return s;
}

运行效率如下所示:

力扣(LeetCode)刷题,简单题(第25期)相关推荐

  1. Leetcode-How-What 力扣Leetcode刷题指南

    Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the intervie ...

  2. 力扣(LeetCode)刷题,简单+中等题(第35期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...

  3. 力扣(LeetCode)刷题,简单+中等题(第26期)

    目录 第1题:字典序排数 第2题:字符串解码 第3题:查找常用字符 第4题:所有奇数长度子数组的和 第5题:长按键入 第6题:分割字符串的最大得分 第7题:回文链表 第8题:有多少小于当前数字的数字 ...

  4. 力扣(LeetCode)刷题,简单题(第23期)

    目录 第1题:整数转换 第2题:重复的子字符串 第3题:范围求和2 第4题:反转数位 第5题:数字转换为十六进制 第6题:比较含退格的字符 第7题:三个数的最大乘积 第8题:珠玑妙算 第9题:旋转字符 ...

  5. 力扣(LeetCode)刷题,简单题(第15期)

    目录 第1题:将整数转换为两个无零整数的和 第2题:一周中的第几天 第3题:把二叉搜索树转换为累加树 第4题:连续字符 第5题:拿硬币 第6题:删除中间节点 第7题:猜数字 第8题:整数的各位积和之差 ...

  6. 力扣(LeetCode)刷题,简单题(第5期)

    目录 第1题:二进制中1的个数 第2题:打印从 1 到最大的 n 位十进制数 第3题:删除链表的节点 第4题:调整数组顺序使奇数位于偶数前面 第5题:链表中倒数第K个节点 第6题:反转链表 第7题:二 ...

  7. 力扣(LeetCode)刷题,简单+中等题(第34期)

    目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...

  8. 力扣(LeetCode)刷题,简单+中等题(第33期)

    目录 第1题:Z 字形变换 第2题:删除字符串中的所有相邻重复项 第3题:基本计算器 II 第4题:螺旋矩阵 第5题:螺旋矩阵 II 第6题:盛最多水的容器 第7题:删除有序数组中的重复项 II 第8 ...

  9. 力扣(LeetCode)刷题,简单+中等题(第32期)

    目录 第1题:数组的度 第2题:托普利茨矩阵 第3题:爱生气的书店老板 第4题:翻转图像 第5题:有效的数独 第6题:无重复字符的最长子串 第7题:区域和检索 - 数组不可变 第8题:二维区域和检索 ...

  10. 力扣(LeetCode)刷题,简单+中等题(第31期)

    目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题 ...

最新文章

  1. 4. matlab 中的axis与axes的区别
  2. 在电脑上安装python的步骤-python中pygame安装过程(超级详细)
  3. sql server2005 循环操作
  4. java选择题答案_Java习题附答案
  5. C#锐利体验-第五讲 构造器与析构器(转)
  6. 通过OracleDataReader来读取BLOB类型的数据 (转载)
  7. angular依赖注入_Angular依赖注入简介
  8. ProxmoxVE(V5.2) 之 使用外部ceph存储(luminous)
  9. “乌木”到底是何物?它是怎样形成的?为何总能卖出天价?
  10. 区块链 分片sharding 网络分片 交易分片 状态分片 是什么
  11. oracle 设置不可重复,oracle – 不可重复读和幻读之间有什么区别?
  12. fw150us的linux驱动下载,FAST FW150US2.0无线网卡驱动
  13. Trace-导出已有的服务器端跟踪
  14. microsoftedge无限弹出_Win10升级之后edge浏览器总是弹出欢迎页面解决方法
  15. 常用分辨率、帧率、码率
  16. JS for循环练习题
  17. NERO刻录ISO镜像图解教程
  18. 【学习记录】图片行列切割与子图行列拼接之中央裁剪法
  19. QQ浏览器如何设置HTTP代理
  20. iphone开发中的手势操作:Multiple Taps

热门文章

  1. windows java 小程序_JAVA第一个窗体小程序
  2. 微信小程序获取验证码倒计时
  3. github上的图片当网络图片使用
  4. springboot-springmvc-requestParam
  5. 根据进程名杀死进程 -kill进程名
  6. Error when running Swift3 in REPL
  7. 将ADS1.2的工程迁移到KEIL上-基于2440
  8. JAVA基础(JAVA 执行环境) 第一天
  9. 学习linux要会mysql吗_linux 学习 mysql安装到连接
  10. 建立二维数组_二维数组的 DP