题目地址:https://leetcode-cn.com/problems/longest-happy-string/

题目描述

给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。

不占用额外内存空间能否做到?

示例 1:

  1. 给定 matrix =
  2. [
  3. [1,2,3],
  4. [4,5,6],
  5. [7,8,9]
  6. ],
  7. 原地旋转输入矩阵,使其变为:
  8. [
  9. [7,4,1],
  10. [8,5,2],
  11. [9,6,3]
  12. ]

示例 2:

  1. 给定 matrix =
  2. [
  3. [ 5, 1, 9,11],
  4. [ 2, 4, 8,10],
  5. [13, 3, 6, 7],
  6. [15,14,12,16]
  7. ],
  8. 原地旋转输入矩阵,使其变为:
  9. [
  10. [15,13, 2, 5],
  11. [14, 3, 4, 1],
  12. [12, 6, 8, 9],
  13. [16, 7,10,11]
  14. ]

题目大意

a 个字母 ‘a’、b 个字母 ‘b’、c 个字母 ‘c’,不准出现连续三个相同的字母。可以够成的最长的字符串是什么。

解题方法

两次翻转

这个题和48. Rotate Image是一样的,都是需要两次翻转。

  1. 沿对角线翻转 交换方式是
  2. 沿着中轴线翻转 交换方式是 ←→

经过这两个翻转之后,就变成了顺时针旋转90°。

C++ 代码如下。

  1. class Solution {
  2. public:
  3. void rotate(vector<vector<int>>& matrix) {
  4. const int N = matrix.size();
  5. if (N <= 1) return;
  6. for (int i = 0; i < N; ++i) {
  7. for (int j = i + 1; j < N; ++j) {
  8. int swap = matrix[i][j];
  9. matrix[i][j] = matrix[j][i];
  10. matrix[j][i] = swap;
  11. }
  12. }
  13. for (int i = 0; i < N; ++i) {
  14. for (int j = 0; j < N / 2; ++j) {
  15. int swap = matrix[i][j];
  16. matrix[i][j] = matrix[i][N - 1 - j];
  17. matrix[i][N - 1 - j] = swap;
  18. }
  19. }
  20. }
  21. };

欢迎关注负雪明烛的刷题博客,leetcode刷题800多,每道都讲解了详细写法!

日期

2020 年 4 月 7 日 —— 没被抽中盲审,开心

【LeetCode】面试题 01.07. 旋转矩阵的更多相关文章

  1. Java实现 LeetCode 面试题 01.07. 旋转矩阵(按照xy轴转+翻转)

    面试题 01.07. 旋转矩阵 给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节.请你设计一种算法,将图像旋转 90 度. 不占用额外内存空间能否做到? 示例 1: 给定 mat ...

  2. 【算法训练营day4】LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表II

    [算法训练营day4]LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表 ...

  3. Leetcode 面试题 01.01. 判定字符是否唯一

    实现一个算法,确定一个字符串 s 的所有字符是否全都不同. 示例 1: 输入: s = "leetcode"输出: false 示例 2: 输入: s = "abc&qu ...

  4. LeetCode 面试题 02.07. 链表相交

    题目链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists-lcci/ 给定两个(单向)链表,判定它们是否相交并返回交 ...

  5. [LeetCode]面试题 01.06. 字符串压缩

    题目 字符串压缩.利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能.比如,字符串aabcccccaaa会变为a2b1c5a3.若"压缩"后的字符串没有变短,则返回原先 ...

  6. http://www.cnblogs.com/zhaoyang/archive/2012/01/07/2315436.html

    http://www.cnblogs.com/zhaoyang/archive/2012/01/07/2315436.html

  7. Java设计模式面试题 01 - 六大原则

    Java设计模式面试题 01 - 六大原则 1. 单一职责原则 Single Responsibility Principle SRP原则 分清职责,接口一定要做到单一职责,方法也要做到,类尽量做到 ...

  8. C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

    目录 为什么要刷LeetCode 刷LeetCode有哪些好处? LeetCode vs 传统的 OJ LeetCode刷题时的心态建设 C#如何刷遍LeetCode 选项1: VS本地Debug + ...

  9. C#刷遍Leetcode面试题系列连载(2): No.38 - 报数

    目录 前言 题目描述 相关话题 相似题目 解题思路: 运行结果: 代码要点: 参考资料: 文末彩蛋 前言 前文传送门: C# 刷遍 Leetcode 面试题系列连载(1) - 入门与工具简介 上篇文章 ...

随机推荐

  1. Oracle-一张表中增加计算某列值重复的次数列,并且把表中其他列也显示出来,或者在显示过程中做一些过滤

    总结: 1.计算某列值(数值or字符串)重复的次数 select 列1,count( 列1 or *) count1  from table1 group by 列1 输出的表为:第一列是保留唯一值的 ...

  2. Java 读取txt文件生成Word文档

    本文将以Java程序代码为例介绍如何读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: IntelliJ IDEA Free Spire.Doc for Java T ...

  3. Shell 打印文件的最后5行

    目录 Shell 打印文件的最后5行 题解-awk 题解-tail Shell 打印文件的最后5行 经常查看日志的时候,会从文件的末尾往前查看,于是请你写一个 bash脚本以输出一个文本文件 nowc ...

  4. APK 反编译以及遇到的问题

    APK反编译: https://www.cnblogs.com/geeksongs/p/10864200.html 遇到的问题 https://www.jianshu.com/p/55bf5f688e ...

  5. Default Assignment Operator and References

    We have discussed assignment operator overloading for dynamically allocated resources here . This is ...

  6. vue中vuex的五个属性和基本用法

    VueX 是一个专门为 Vue.js 应用设计的状态管理构架,统一管理和维护各个vue组件的可变化状态(你可以理解成 vue 组件里的某些 data ). Vuex有五个核心概念: state, ge ...

  7. Java Bean 与Spring Bean 的区别

    什么是JavaBean: JavaBean是一种JAVA语言写的可重用组件.JavaBean符合一定规范写的Java类,是一种规范.它的方法命名,构造以及行为必须符合特定的要求:     1.所有属性 ...

  8. 【C/C++】子数组的最大累加和问题

    #include <bits/stdc++.h> using namespace std; class Solution { public: /** * max sum of the su ...

  9. 云服务器ECS部署和卸载RabbitMQ

    云服务器ECS部署RabbitMQ RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件,用于在分布式系统中存储转发消息,有良好的易用性.扩展性和高可用性.本文介绍如何通过ECS实例 ...

  10. intelliJ破解及JavaEE搭建

    intellij2020.3破解 转载自https://www.exception.site/essay/how-to-free-use-intellij-idea-2019-3 第一步: 下载最新的 ...