js实现蛇形矩阵
参加腾讯前端实习生笔试,真的是被虐了千百遍,除了一条js程序题,其他半点前端都没有,都是考算法,计算机原理,数据结构。下面贴上腾讯笔试最后三大条中的一条,实现一个蛇形矩阵的输出。蛇形矩阵的什么样这里我就不多说了。
var lineCount=0;
var numCount=1;
var lineLog=1;
var doubleArray=[];
var result="result:";
var lineCountGet;
function index (n) {
ArrayMake(n);
lineCountGet=n;
draw(lineCount);
}
function ArrayMake(log){
if(log>0){
--log;
doubleArray[log]=new Array();
ArrayMake(log)
}
}
function draw(lineNum){
if(lineNum>lineCountGet){
console.log(result);
}else{
for(i=0;i<=lineNum;i++){
console.log(doubleArray);
if(lineLog==1){
doubleArray[lineNum-i][i]=numCount;
result+=doubleArray[lineNum-i][i];
}else{
doubleArray[i][lineNum-i]=numCount;
result+=doubleArray[i][lineNum-i];
}
++numCount;
}
lineLog=-lineLog;
++lineCount;
draw(lineCount);
}
}
index(5);
整理下思路,首先看到蛇形矩阵,第一想法就是做成一个二维矩阵,然后通过遍历输出。这里博主没有输出,只是console了一下
首先看变量定义
var lineCount=0;
var numCount=1;//当前排到的数字
var lineLog=1;//矩阵排列顺序有两种,这里将自左下至右上设为负
var doubleArray=[];//初始化一个数组
var result="result:";
var lineCountGet;//需要输出几列
function index (n) {
ArrayMake(n);
lineCountGet=n;
draw(lineCount);
}
因为数字插入是按照1,2,3,4.....这样的,所以初始化一下,之后通过自加实现递增。linelog的设定是因为我们每个斜行顺序有正向有反向
之后我们遇到第一个问题,js中不可以直接命名多维数组,所以我们只好自己造一个通过function ArrayMake
function ArrayMake(log){
if(log>0){
--log;
doubleArray[log]=new Array();
ArrayMake(log)
}
}
用一步递归,对array中每个数组再次array化
数组造好了,下面我们要做的就是插数字了
function draw(lineNum){
if(lineNum>lineCountGet){
console.log(result);
}else{
for(i=0;i<=lineNum;i++){
console.log(doubleArray);
if(lineLog==1){
doubleArray[lineNum-i][i]=numCount;
result+=doubleArray[lineNum-i][i];
}else{
doubleArray[i][lineNum-i]=numCount;
result+=doubleArray[i][lineNum-i];
}
++numCount;
}
lineLog=-lineLog;
++lineCount;
draw(lineCount);
}
}
linenum这边是用来告知当前是第几斜行,因为第几斜行就有几个数,这样便于for循环的书写,再通过linelog辨别斜行顺序的正反区分应该加入数组的样式。ok,搞定!
js实现蛇形矩阵的更多相关文章
- 【面试】输出"蛇形"矩阵
一.题目描述 腾讯实习在线笔试的一道题目. 根据输入的数字(< 1000),输出这样的"蛇形"矩阵,如下.输入n,输出(n * n)阶矩阵,满足由外到内依次增大. 如: 输入 ...
- c++实现蛇形矩阵总结
蛇形矩阵,百度了一下,是这么一个东西: 像一条蛇一样依次递增. 我想,竟然做了螺旋矩阵,那做一下这个吧.在之前的螺旋矩阵的main函数基础上,写个函数接口就行了,这一次做的很快,但是这个矩阵感觉比螺旋 ...
- wikioi 1160 蛇形矩阵
/*======================================================================== 1160 蛇形矩阵 题目描述 Descriptio ...
- EOJ3536 求蛇形矩阵每一行的和---找规律
题目链接: https://acm.ecnu.edu.cn/problem/3536/ 题目大意: 求蛇形矩阵的每一行的和,数据范围n<=200000. 思路: 由于n数据较大,所以感觉应该是需 ...
- Java编码 蛇形矩阵的构建与遍历输出
一.蛇形矩阵的构建,并按行输出 例: 输入:n, 生成n*n的蛇形矩阵 1 2 3 8 9 4 7 6 5 输出:1 2 3 8 9 4 7 6 5 java编码 public static void ...
- c++打印蛇形矩阵
一个m*n的矩阵里按照下图形式填充,最后形成的矩阵即为蛇形矩阵,下图是m=4, n =5时的蛇形矩阵: 方法一:逐层循环 #include <iostream> using namespa ...
- EOJ 3.30 B. 蛇形矩阵【找规律/待补】
[链接]:https://acm.ecnu.edu.cn/contest/59/problem/B/ B. 蛇形矩阵 Time limit per test: 2.0 seconds Memory l ...
- ACM_蛇形矩阵
蛇行矩阵 Time Limit: 4000/2000ms (Java/Others) Problem Description: 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. Input: ...
- ACM_三角形蛇形矩阵
三角形蛇形矩阵 Time Limit: 2000/1000ms (Java/Others) Problem Description: 小铠觉得各类题型是要温故而知新的,所以他叫小发出一道类似做过的题. ...
随机推荐
- PHP验证用户登录例子-学习笔记
1.基本流程: 2.UML类图: 3.PHP代码: 3.1 index.php <?php /** * Created by PhpStorm. * User: andy * Date: 16- ...
- 在Ubuntu 16.10 安装 git 并上传代码至 git.oschina.net
1. 注册一个账号和创建项目 先在git.oschina.net上注册一个账号和新建一个project ,如project name 是"myTest". 2.安装git sudo ...
- 玩转spring boot——开篇
很久没写博客了,而这一转眼就是7年.这段时间并不是我没学习东西,而是园友们的技术提高的非常快,这反而让我不知道该写些什么.我做程序已经有十几年之久了,可以说是彻彻底底的“程序老炮”,至于技术怎么样?我 ...
- Loadrunner Http Json接口压力测试
前天接到了一个测试任务,要求测试一下ES(elsticsearch)在不同并发下的查询效率.如图: 业务场景是在客户端根据具体车牌查询相关车辆信息,结果返回前10条记录. 从图中可以看到,接口的请求参 ...
- 张高兴的 UWP 开发笔记:横向 ListView
ListView 默认的排列方向是纵向 ( Orientation="Vertical" ) ,但如果我们需要横向显示的 ListView 怎么办? Blend for Visua ...
- 分页插件--根据Bootstrap Paginator改写的js插件
刚刚出来实习,之前实习的公司有一个分页插件,和后端的数据字典约定好了的,基本上是看不到内部是怎么实现的,新公司是做WPF的,好像对于ASP.NET的东西不多,导师扔了一个小系统给我和另一个同事,指了两 ...
- JS中关于字符串的几个常用又容易忘记的方法
1>.字符串连接:concat(): 左边字符串. concat(连接的字符串1,字符串2,....); 获取指定位置的字符:charAt(): 返回指定位置的字符: 字符串.charAt(i ...
- 理解Storm并发
作者:Jack47 PS:如果喜欢我写的文章,欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 注:本文主要内容翻译自understanding-the-parall ...
- mysql join 和left join 对于索引的问题
今天遇到一个left join优化的问题,搞了一下午,中间查了不少资料,对MySQL的查询计划还有查询优化有了更进一步的了解,做一个简单的记录: select c.* from hotel_info_ ...
- 我的MYSQL学习心得(八) 插入 更新 删除
我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...