演算法類面試題解析——美團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日參加
美圖2016校招java程式設計
列印九九乘法表,不能使用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