2021-02-03

算法面试题四:两数之和,有效的数独,旋转图像

这里介绍排序算法及贪心算法的个人解决方法

题目一:两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6输出:[0,1]

提示:

2 <= nums.length <= 103-109 <= nums[i] <= 109-109 <= target <= 109只会存在一个有效答案

答案:

/** * @param {number[]} nums * @param {number} target * @return {number[]} */var twoSum = function(nums, target) { let arr=[]; for(let i=0;i<nums.length-1;i++){  let bind = true;  let jj = 0;  for(let j=i+1;j<nums.length;j++){   if(nums[i]+nums[j] == target){    bind = false;    jj = j;   }  }  if(!bind){   arr.push(i)   arr.push(jj)   nums.splice(i,1);   nums.splice(jj,1);   i--;  } } return arr;};

题目二:有效的数独

判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。1.数字 1-9 在每一行只能出现一次。2.数字 1-9 在每一列只能出现一次。3.数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 '.' 表示。

示例 1:

输入:[ ["5","3",".",".","7",".",".",".","."], ["6",".",".","1","9","5",".",".","."], [".","9","8",".",".",".",".","6","."], ["8",".",".",".","6",".",".",".","3"], ["4",".",".","8",".","3",".",".","1"], ["7",".",".",".","2",".",".",".","6"], [".","6",".",".",".",".","2","8","."], [".",".",".","4","1","9",".",".","5"], [".",".",".",".","8",".",".","7","9"]]输出: true

示例 2:

输入:[  ["8","3",".",".","7",".",".",".","."],  ["6",".",".","1","9","5",".",".","."],  [".","9","8",".",".",".",".","6","."],  ["8",".",".",".","6",".",".",".","3"],  ["4",".",".","8",".","3",".",".","1"],  ["7",".",".",".","2",".",".",".","6"],  [".","6",".",".",".",".","2","8","."],  [".",".",".","4","1","9",".",".","5"],  [".",".",".",".","8",".",".","7","9"]]输出: false

说明:

一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。给定数独序列只包含数字 1-9 和字符 '.' 。给定数独永远是 9x9 形式的。

答案:

/** * @param {character[][]} board * @return {boolean} */var isValidSudoku = function(board) { for (let arr of board) {    let row = [] for (let c of arr) {  if (c !== '.') row.push(c); } let set = new Set(row) if (set.size !== row.length) return false; } // 检查每一列 for (let i = 0; i < 9; i++) { let col = [] board.map( arr => {  if (arr[i] !== '.') col.push(arr[i]) }) let set = new Set(col) if (set.size !== col.length) return false; } // 检查每个小方块 for (let x = 0; x < 9; x += 3) { for (let y = 0; y < 9; y += 3) {  let box = []  for (let a = x; a < 3 + x; a ++) {  for (let b = y; b < 3 + y; b ++) {   if (board[a][b] !== '.') box.push(board[a][b])  }  }  let set = new Set(box)  if (set.size !== box.length) return false } } return true};

题目三:旋转图像

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

示例 1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]

示例 2:

输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

示例 3:

输入:matrix = [[1]]输出:[[1]]

示例 4:

输入:matrix = [[1,2],[3,4]]输出:[[3,1],[4,2]]

提示:

matrix.length == nmatrix[i].length == n1 <= n <= 20-1000 <= matrix[i][j] <= 1000

答案:

/** * @param {number[][]} matrix * @return {void} Do not return anything, modify matrix in-place instead. */var rotate = function(matrix) { let length = matrix.length; for(let i=0;i<length/2;i++){  for (let j = i; j < length - 1 - i; j++) {   let tmp = matrix[i][j];   matrix[i][j] = matrix[length - 1 - j][i];   matrix[length - 1 - j][i] = matrix[length - 1 - i][length - 1 - j];   matrix[length - 1 - i][length - 1 - j] = matrix[j][length - 1 - i];   matrix[j][length - 1 - i] = tmp;  } } return matrix;};

如果对你有帮助,请你点个推荐,我会和你一起进步,加油(*^▽^*)。









原文转载:http://www.shaoqun.com/a/523517.html

跨境电商:https://www.ikjzd.com/

olive:https://www.ikjzd.com/w/2025

livingsocial:https://www.ikjzd.com/w/714.html


这里介绍排序算法及贪心算法的个人解决方法题目一:两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11,15],target=9输出:[0,1]解释:因为nums[0]+nums[1]==9,
ishare:ishare
hunter:hunter
跨境电商遭多国封关,柬埔寨首相力挺中国!:跨境电商遭多国封关,柬埔寨首相力挺中国!
想自己出来创业做亚马逊?你得必备这些技能!:想自己出来创业做亚马逊?你得必备这些技能!
你的亚马逊listing为什么会被删评?亚马逊删评数据模型解析(2)!:你的亚马逊listing为什么会被删评?亚马逊删评数据模型解析(2)!

No comments:

Post a Comment