算法刷题-回文数、找出小于平均值的数、旋转图像(C_C++)

2023-02-10 09:54:08 浏览数 (1)

文章目录
  • 回文数
  • 找出小于平均值的数
  • 旋转图像

回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。

示例 1:

代码语言:javascript复制
输入:x = 121
输出:true

示例 2:

代码语言:javascript复制
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

代码语言:javascript复制
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。

示例 4:

代码语言:javascript复制
输入:x = -101
输出:false

提示:

  • -231 <= x <= 231 - 1
代码语言:javascript复制
bool isPalindrome(int x)
{
    if (x < 0)
        return false;
    char r[11];
    int n = snprintf(r, 11, "%d", x);
    int i;
    for (i = 0; i < n / 2; i  )
    {
        if (r[i] != r[n - i - 1])
            return false;
    }
    return true;
}

找出小于平均值的数

从键盘输入一个正整数存入变量n中,再输入n个整数,然后找出所有小于平均值的数,并按输入顺序输出。 以下程序实现了这一功能,请你补全空白处内容:

代码语言:javascript复制
#include <stdio.h>
int main()
{
    int i, n, sum = 0, a[100];
    float ave;
    scanf("%d", &n);
    for (i = 0; i < n; i  )
    {
        scanf("%d", &a[i]);
        sum  = a[i];
    }
    ave = sum * 1.0 / n;
    for (i = 0; i < n; i  )
    {
        __________________;
    }
    return 0;
}
代码语言:javascript复制
if (a[i] < ave)
	printf("%d", a[i]);

旋转图像

给定一个 _n _× n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在** 原地(https://baike.baidu.com/item/原地算法)** 旋转图像,这意味着你需要直接修改输入的二维矩阵。**请不要 **使用另一个矩阵来旋转图像。

示例 1:

代码语言:javascript复制
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,4,1],[8,5,2],[9,6,3]]

示例 2:

代码语言:javascript复制
输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

示例 3:

代码语言:javascript复制
输入:matrix = [[1]]
输出:[[1]]

示例 4:

代码语言:javascript复制
输入:matrix = [[1,2],[3,4]]
输出:[[3,1],[4,2]]

提示:

  • matrix.length == n
  • matrix[i].length == n
  • 1 <= n <= 20
  • -1000 <= matrix[i][j] <= 1000

以下程序实现了这一功能,请你填补空白处内容:

代码语言:javascript复制
#include <bits/stdc  .h>
using namespace std;
class Solution
{
public:
	void rotate(vector<vector<int>> &matrix)
	{
		int size = matrix.size();
		for (int i = 0; i < size / 2; i  )
		{
			int low = i, high = size - i - 1;
			for (int j = low; j < high; j  )
			{
				int tmp = matrix[i][j];
				_________________________;
			}
		}
	}
};

答案:

代码语言:javascript复制
matrix[i][j] = matrix[size - 1 - j][i];
matrix[size - 1 - j][i] = matrix[size - 1 - i][size - 1 - j];
matrix[size - 1 - i][size - 1 - j] = matrix[j][size - 1 - i];
matrix[j][size - 1 - i] = tmp;

本文内容到此结束了, 如有收获欢迎点赞

0 人点赞