字节跳动 第一、三题记录

1.关于产品经理转换成程序员问题.
对于任一产品经理,如果他的四方向邻域有程序员,则这次迭代他变成程序员.
最大迭代次数N=max(height , width ) .如果超过了最大迭代次数,cout << -1 << endl ;
注意数组越界问题。
注意这题的四方向探测在很多地方有用到,比方说图像处理里的拉普拉斯增强。曾经有一位同学因为拉普拉斯增强不会写丢了offer,这里我们把他批判一番.
3.关于跳柱子的问题.
一个人能够到达第N根柱子的充要条件是 他能到达第N-1根柱子,假设此时他的能量为En-1那么En =  -Hn - 2*En-1 .
已知 EN = 0 , En-1 = (Hn + En)/ 2 .那么 E0 可以直接递推得出 , 注意向上取整 .

附第一题代码:
#include <iostream> #include <cstdio> #include <vector> using namespace std ;
vector< vector< char > > input(){         char ch ;     vector< vector< char > > ret ;     while( 1 ){         vector< char > tmp_vec ;         while( 1 ){             ch = getchar() ;             if( ch == '\n' ) break ;             if( ch == -1 ) return ret ;             if( ch != ' ' && ch != '\n' ) tmp_vec.push_back( ch ) ;                     }     ret.push_back( tmp_vec ) ;     }     return ret ; }
bool isOK( vector< vector< char > > mat ){     for( int i = 0 ; i < mat.size() ; i++ )         for( int j = 0 ; j < mat[ i ].size() ; j++ )             if( mat[ i ][ j ] == '1' ) return false ;     return true ; }
vector< vector< char > > laplace( const vector< vector<char> >& mat ){     vector< vector< char > > ret = mat ;
vector< pair< int , int > > direct ;     direct.push_back( make_pair( -1 , 0 ) ) ;     direct.push_back( make_pair( 0 , 1 ) ) ;     direct.push_back( make_pair( 1 , 0 ) ) ;     direct.push_back( make_pair( 0 , -1 ) ) ;
for( int i = 0 ; i < mat.size() ; i++  ){         for( int j = 0 ; j < mat[ i ].size() ; j++ ){             bool flag = false ;             for( int k = 0 ; k < direct.size() ; k++ ){                 int x = i + direct[ k ].first ;                 int y = i + direct[ k ].second ;
if( x < mat.size() && x >= 0 && y < mat[ i ].size() && y >=0 && mat[ x ][ y ] == '2' && mat[ i ][ i ] == '1'  ) ret[ i ][ j ] = '2' ;
}         }             }
return ret ;
}
int main(){     vector< vector< char > > matrix = input() ;         for( int i = 0 ; i < matrix.size() + 1 ; i++ )     {         if( isOK( matrix ) ) {             cout << i << endl ;             return 0 ;          }         matrix = laplace( matrix ) ;     }
cout << -1 << endl ;
}

#字节跳动##笔试题目#
全部评论
第三题跳柱子的样例是什么啊 第三组样例忘记了
点赞 回复 分享
发布于 2019-04-14 12:46
第二题: import java.util.HashMap; import java.util.Scanner; import java.util.Map.Entry; public class Main {     public static void main(String[] args) {         Scanner scan = new Scanner(System.in);         int m = Integer.parseInt(scan.nextLine());         int n = Integer.parseInt(scan.nextLine());         HashMap<String, Integer> map = new HashMap<>();         int max = 0;         for (int i = 0; i < n; i++) {             String[] strs = scan.nextLine().split(" ");             int k = Integer.parseInt(strs[0]);             if (k > 0) {                 String[] zus = new String[k];                 for (int j = 0; j < k; j++) {                     StringBuilder sb = new StringBuilder();                     sb.append(strs[2 * j + 1]);                     sb.append(strs[2 * j + 2]);                     zus[j] = sb.toString();                 }                 if (map.size() == 0) {                     for (int j = 0; j < zus.length; j++) {                         map.put(zus[j], 1);                     }                 } else {                     HashMap<String, Integer> map2 = new HashMap<>();                     for (Entry<String, Integer> entry : map.entrySet()) {                         int nums = entry.getValue();                         for (int j = 0; j < zus.length; j++) {                             if (entry.getKey().equals(zus[j])) {                                 nums++;                                 if (nums > max)                                     max = nums;                                 map2.put(entry.getKey(), nums);                                 break;                             }                         }                     }                     map = new HashMap<>(map2);                 }             } else {                 map = new HashMap<>();             }         }         if (max <= 1)             System.out.println(1);         else             System.out.println(max);     } }
点赞 回复 分享
发布于 2019-04-14 12:43
第二题就是判断边界条件太麻烦了
点赞 回复 分享
发布于 2019-04-14 12:41

相关推荐

04-10 11:56
如皋中学 Java
高斯林的信徒:双c9能简历挂的?
点赞 评论 收藏
分享
哥_留个offer先:跟他说,你这个最好用c#,微软就用c#Java不适合这个项目
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务