1. 程式人生 > >演算法類面試題解析——美團2016校招:棋子翻轉

演算法類面試題解析——美團2016校招:棋子翻轉

題目來自伯樂線上,歡迎有不同答案的同學來一起討論。

這裡寫圖片描述

分析:

本題主要是二維陣列的操作,對指定的位置上的數字進行翻轉,其具體過程如下所示:

這裡寫圖片描述

其基本的過程如下:

  • 遍歷陣列二,如上圖中的紅色位置:
    • 找到其周圍的四個位置,注意陣列的上下界
    • 驗證沒有越界的條件下,對其進行修改

方法:

void do_reverse(int **a, int k, int i, int j){
    if (i >= 0 && i < k && j >=0 && j < k){
        int v = *((int
*)a + k*i + j); if (v == 0){ *((int*)a + k*i + j) = 1; }else{ *((int*)a + k*i + j) = 0; } } } void reverse_array(int **a, int **index, int k, int num_i, int num_j){ if (k <= 0 || num_i <= 0) return; for (int i = 0; i < num_i; i++){ int
index_i = (*((int*)index + num_j*i)) - 1; int index_j = (*((int*)index + num_j*i + 1)) - 1; // 生成4個翻轉點 int index_i_left = index_i - 1; int index_i_right = index_i + 1; int index_j_up = index_j - 1; int index_j_down = index_j + 1; do_reverse(a, k, index_i_left, index_j); do_reverse(a, k, index_i_right, index_j); do_reverse(a, k, index_i, index_j_up); do_reverse(a, k, index_i, index_j_down); } }

相關推薦

演算法試題解析——2016棋子翻轉

題目來自伯樂線上,歡迎有不同答案的同學來一起討論。 分析: 本題主要是二維陣列的操作,對指定的位置上的數字進行翻轉,其具體過程如下所示: 其基本的過程如下: 遍歷陣列二,如上圖中的紅色位置: 找到其周圍的四個位置,注意陣列的上下界 驗證沒有越界的條件下,對其進行修改 方法:

點評試題

美團點評1 1:在網路7層協議中,如果想使用UDP協議達到TCP協議的效果,可以在哪層做文章? 因為UDP要達到TCP的功能就必須實現擁塞控制的功能,而且是在路由之間實現,這個在底層明顯是做不到擁塞控制的,在應用層也是做不到的,因為應用層之間和應用程式掛鉤,一般

一名2018年應屆生的前端面試之旅

從17年秋招開始我便向美團投了簡歷,也參加了線上筆試,但是輸的很慘淡,筆試沒過後,來繼續在武漢找了家小公司實習。春招開啟之際,我嘗試過投了鬥魚(沒有獲得面試機會),小紅書(筆試沒過),360(拿到了實習offer以及技術經理承諾的好好表現就能轉正的口頭承諾)等等。當然,這其中還有美團,我於18年3月22日參加

2016java程式設計

列印九九乘法表,不能使用for,while 解:使用遞迴,程式碼如下 public class nine { public static void main(String[] args){ int i=1,j=1; foo_C(1,1); }

2018點評-K的倍數

題目描述: 序列中任意個連續的元素組成的子序列被稱為該序列的字串 現在給你一個序列P和一個整數K,詢問元素和是K的倍數的子串的最大長度 比如序列{1,2,3,4,5},給定的整數K為5,其中滿足條件的子串為{5}、{2,3}、{1,2,3,4} 、{1,

2018.3.22 2018筆試

總體來說體驗不錯,考題總共分為四個部分,前三部分涉及較廣,連編譯原理,軟體工程,彙編都考到了一點。數學部分偏概率和排列組合,但都是高中的常規考題。 要吐槽的就是有兩道圖片邏輯題了,眼瞎(星際)的我是在看不出什麼規律: 各位看官們找到規律了嗎,反正這兩道我當時是憑感覺選的。。。 好像還有一道概率題,紅綠燈

【Android】 點評一面17/9/21

到了秋招季,身為大四狗自然是苦逼的找工作。 由於沒有參加培訓,對於各種筆試,面試(尤其是面試)充滿恐懼心理; 感謝美團給我這次面試的機會,這是我的第三次面試。 前兩次分別面的陳昇寶實習生,和秋招的搜狗。 場面十分的尷尬。。。不忍回憶!T.T… 由於我當

java的集合試題

構造 是否 自定義 完成 init 隊列 創建 equal 具體類 轉自:https://yq.aliyun.com/articles/78788?spm=5176.8252056.759076.3.uFYrmt java.util包中包含了一系

大公司喜歡問的Java集合試題

排序 ger stack cap out strong factor ack 繼承 大公司喜歡問的Java集合類面試題 看了一些所謂大公司的JAVA面試問題,發現對於JAVA集合類的使用都比較看重似的,而自己在這方面還真的是所真甚少,抽空也學習學習吧。 java.uti

Golang試題解析(五)

import == all 允許 沒有 ron lang 不兼容 i++ 41.執行下面的代碼發生什麽? package main type Param map[string]interface{} type Show struct { *Param } fu

javaSE三個特殊的 -- String&String試題

String類 String類 String的兩種例項化方式             直接賦值(用的最多)     

java試題及程式設計題

一程式題 1編寫一個圓類Circle,該類擁有:  ①一個成員變數  Radius(私有,浮點型);  // 存放圓的半徑;         ②兩個構造方法       

常見試題解析-判斷是否有環

題目:假設我們有一個指標指向一個連結串列,並且我們知道這個連結串列是一個單鏈。能否在保證演算法的時間複雜度為O(n), 空間複雜度為O(1)的情況下,設計一種演算法判斷這個連結串列是否有環。 解析:這是個疑惑性很強的題目,無法根據直觀的想象得出答案。我們首先要考慮一下幾個因素: 1

2018演算法試題整理

神經網路 1、簡述反向傳播原理 (阿里),面試官微信發了一道反向傳播的算數題,要求算出結果並解釋 (要能計算的) 2、sigmoid和ReLU的優劣 3、梯度消失問題和損失函式有關嗎? 4、Dropout為什麼能防止過擬合? 5、Batch No

邏輯思維試題彙集一

1. 在臨上刑場前,國王對預言家說:“我給你一個機會,你可以預言一下今天我將如何處死你。你如果預言對了,我就讓你服毒死;否則,我就絞死你。”但是聰明的預言家的回答,使得國王無法將他處死。 答:預言家說:我將被絞死。 析:簡單的悖論。 2. 有三個箱子,一個只裝蘋果,一個只

邏輯思維試題彙編四

81.白帽和黑帽 老師讓6名學生圍坐成一圈,另讓一名學生坐在中央,並拿出七頂帽子,其中四頂白色,三頂黑色。然後矇住七名學生的眼睛,並給坐在中央的學生戴一頂帽子,而只解開坐在圈上的六名學生的眼罩。這時,由於坐在中央的學生的阻擋,每個人只能看到五個人的帽子。老師說:“現在,你們七

邏輯思維試題彙編七

141.有四個人借錢的數目分別是這樣的:阿伊庫向貝爾借了10美元;貝爾向查理借了20美元;查理向迪克借了30美元;迪克又向阿伊庫借了40美元。碰巧四個人都在場,決定結個賬,請問最少只需要動用多少美金就可以將所有欠款一次付清? 析:阿伊庫支出30美元,剩下每人收入10美元。因此

邏輯思維試題彙編六

121.有十種水果: a 有550個,b 有600個,c 有700個,d 有700個,e 有650個,f 有500個,g 500個,h 有600個,i 有600個,j 有500個 現在有個1000人小學校,要求把這些水果平均分到孩子手裡 一年級 200人 每人要求分到:9個

乾貨丨let試題解析

前言 es6之前,js的作用域只有兩種,全域性作用域和函式作用域,沒有像C和java那樣的塊級作用域,於是對於學了C或者java這類語言的然後學習js的同學來說,會遇到很多坑。js的這個特性導致了程式碼的可閱讀性、維護性和容錯性都不太好。因此es6可以用let來

C語言程式猿必會的記憶體四區及經典試題解析

前言:     為啥叫C語言程式猿必會呢?因為特別重要,學習C語言不知道記憶體分割槽,對很多問題你很難解釋,如經典的:傳值傳地址,前者不能改變實參,後者可以,知道為什麼?還有經典面試題如下:  #include <stdio.h> #include <stdlib.h>#in