题目1:矩阵旋转打印

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

思路:打印的时候一圈一圈的打印,记录两个对角(0,0),(m,n),这样逻辑会比较清晰

class Solution {
public:
void print(vector<vector<int> > matrix,int tx,int ty,int bx,int by,vector<int> &ans){
if(tx>bx||ty>by) return ;
if(bx==tx){
for(int i=ty;i<=by;i++){
ans.push_back(matrix[tx][i]) ;
}
}else if(by==ty){
for(int i=tx;i<=bx;i++){
ans.push_back(matrix[i][ty]) ;
}
}else{
for(int i=ty;i<by;i++){
ans.push_back(matrix[tx][i]) ;
}
for(int i=tx;i<bx;i++){
ans.push_back(matrix[i][by]) ;
}
for(int i=by;i>ty;i--){
ans.push_back(matrix[bx][i]) ;
}
for(int i=bx;i>tx;i--){
ans.push_back(matrix[i][ty]) ;
}
}
}
vector<int> printMatrix(vector<vector<int> > matrix) {
int m = matrix.size() ;
int n = matrix[].size() ;
int t = m<n? m : n ;
vector<int> ans ;
for(int i=;i<t;i++){
print(matrix,+i,+i,m--i,n--i,ans) ;
}
return ans ;
}
};

题目2:机器人的运动范围

地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?

思路:反正我一看就想到了搜索,由于之前做了推箱子,感觉很快就写出来了,搜索关键就是对于能否继续搜索下去的条件判断,这道题除了越界和它的那个阈值判断就没了

class Solution {
public:
struct Pos{
int x , y ;
Pos(int x,int y){
this->x = x ;
this->y = y ;
}
};
int movingCount(int threshold, int rows, int cols)
{
queue<Pos> q ;
int ans = ;
vector<vector<int>> vis(rows,vector<int>(cols)) ;
int a[] = {,,-,} ;
int b[] = {-,,,} ;
Pos p(,) ;
q.push(p) ; while(!q.empty()){
Pos t = q.front() ;
q.pop() ;
if(t.x>=rows||t.y>=cols||t.x<||t.y<) continue ;
if(vis[t.x][t.y]) continue ;
string sumStr = to_string(t.x)+to_string(t.y) ;
int sum = ;
for(int i=;i<sumStr.length();i++){
sum += sumStr[i]-'' ;
}
if(sum>threshold) continue ;
vis[t.x][t.y] = ;
ans++ ;
for(int i=;i<;i++){
Pos next(t.x+a[i],t.y+b[i]) ;
q.push(next) ;
}
}
return ans ;
}
};

题目三:两个链表的第一个公共节点

输入两个链表,找出它们的第一个公共结点。

思路:按照长度差,让长度长的先走,然后对比每个节点,如果都没有就返回NULL,然而网上的解答比较厉害,mark一下

/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
        ListNode *p1 = pHead1;
        ListNode *p2 = pHead2;
        while(p1!=p2){
            p1 = (p1==NULL ? pHead2 : p1->next);
            p2 = (p2==NULL ? pHead1 : p2->next);
        }
        return p1;
}
};

c++刷题(43/100)矩阵旋转打印的更多相关文章

  1. leecode刷题(3)-- 旋转数组

    leecode刷题(3)-- 旋转数组 旋转数组 给定一个数组,将数组中的元素向右移动 K 个位置,其中 K 是非负数. 示例: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5, ...

  2. 【洛谷 P1707】 刷题比赛 (矩阵加速)

    题目连接 很久没写矩阵加速了,复习一下,没想到是一道小毒瘤题. 状态矩阵\(a[k],b[k],c[k],a[k+1],b[k+1],c[k+1],k,k^2,w^k,z^k,1\) 转移矩阵 0, ...

  3. luogu题解 P1707 【刷题比赛】矩阵加速递推

    题目链接: https://www.luogu.org/problemnew/show/P1707 分析: 洛谷的一道原创题,对于练习矩阵加速递推非常不错. 首先我们看一下递推式: \(a[k+2]= ...

  4. leetcode刷题-59螺旋矩阵2

    题目 给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 思路 与螺旋矩阵题完全一致 实现 class Solution: def generateM ...

  5. leetcode刷题-54螺旋矩阵

    题目 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 思路 对于每个外层,从左上方开始以顺时针的顺序遍历所有元素.假设当前层的左上角位于(to ...

  6. Leetcode刷题之螺旋矩阵

    矩阵之螺旋矩阵 总体思路: 注意遍历顺序 每次遍历一圈时候不要多加元素 Leetcode54螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素. ...

  7. leetcode刷题-43字符串相乘

    题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 思路 字符串转数字:从字符串第一位开始取,每次取出的值转换为数字 ...

  8. C#LeetCode刷题-数组

    数组篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 43.1% 简单 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组 ...

  9. 剑指offer刷题

    1.面试题43. 1-n整数中1出现的次数 输入一个整数 n ,求1-n这n个整数的十进制表示中1出现的次数. 例如,输入12,1-12这些整数中包含1 的数字有1.10.11和12,1一共出现了5次 ...

随机推荐

  1. xss基础

    0x0 定义 总结: (1)     在页面显示 (2)     用户可控 满足以上两点就有可能存在xss 0x1反射型 0x2存储型 0x3 DOM型 与反射型相似 也是从get等参数传参 但 反射 ...

  2. VMware10 安装centos6.7 设置NAT模式固定ip

    https://www.cnblogs.com/yychnbt/p/5173761.html

  3. 11.11 Daily Scrum

      Today's tasks  Tomorrow's tasks 丁辛 餐厅列表事件处理 餐厅列表事件处理             李承晗             实现指定地点搜索 整合已经完成的部 ...

  4. Python Pandas read_csv报错

    为实现文本去重(将前面采集的数据进行两两对比删除重复),写了以下代码. #-*- coding: utf-8 -*-import pandas as pd inputfile = 'e:/data/H ...

  5. kali 安装使用 sslocal

    shadowsocks 1.安装 shadowsocks apt-get install python-pip sudo pip install shadowsocks 2.配置 shadowsock ...

  6. Opendaylight的Carbon(碳)版本安装

    Opendaylight Carbon(碳)版本安装 1.更新源 sudo apt-get update sudo apt-get upgrade 2.安装JDK1.8 sudo apt-get in ...

  7. 小学四则运算APP 第一个冲刺阶段 第五天

    团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第一次冲刺阶段时间:11.17~11.27 本次发布的是实现练习功能的成功 代码: public class CalculatorActi ...

  8. [福大软工] Z班 团队作业——UML设计 作业成绩

    团队作业--UML设计 作业链接 http://www.cnblogs.com/easteast/p/7745703.html 作业要求 1)团队分工(5分) 描述团队的每个成员分别完成了UML图的哪 ...

  9. 从零开始学Kotlin-扩展函数(10)

    从零开始学Kotlin基础篇系列文章 什么是扩展函数 扩展函数数是指在一个类上增加一种新的行为,我们甚至没有这个类代码的访问权限: Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 ...

  10. Gerrit 配置同步到多个仓库

    1.修改replication.config文件 [remote "xxx"] projects = Yilule.Core.Service #aliyun仓库 url = git ...