一、手写算法
https://leetcode-cn.com/problems/implement-queue-using-stacks/
思路
/**
- @param {number} x
- @return {void} */ MyQueue.prototype.push = function(x) { this.queue[this.len] = x; this.len++; };
/**
- @return {number} */ MyQueue.prototype.pop = function() { if(this.len > 0){ var a = this.queue.shift(); this.len—; return a; }else{ return -1 } };
/**
- @return {number} */ MyQueue.prototype.peek = function() { if(this.len > 0){ return this.queue[0]; }else{ return -1 } };
/**
- @return {boolean} */ MyQueue.prototype.empty = function() { return this.queue.length === 0 ? true :false };
/**
- Your MyQueue object will be instantiated and called as such:
- var obj = new MyQueue()
- obj.push(x)
- var param_2 = obj.pop()
- var param_3 = obj.peek()
- var param_4 = obj.empty()
*/
```
复杂度分析
- 时间复杂度:
- 空间复杂度:
二、编程题
// 手写题:https://bigfrontend.dev/zh/problem/the-angle-between-hour-hand-and-minute-hand-of-a-clock
/**
* Second
* @param {string} time
* @returns {number}
*/
function angle(time) {
// your code here
let [hours, minus] = time.split(':');
let hourAngle = (360 / 12) * (hours % 12);// 小时每大格度数 * 小时 (% 12 ,24小时制)
let minusAngle = (360 / 12 / 5) * minus;// 分钟每格角度*分钟
let pyAngle = (30 / 60) * minus;// 时分偏移量 30度 * x = 60分(x是每走一分钟,小时的偏移量)
let angle = Math.abs(hourAngle + pyAngle - minusAngle);/求夹角
return Math.round(Math.min(angle, 360 - angle));// 最大为180度,求小角,并四舍五入
}
/**
* First
* @param {string} time
* @returns {number}
*/
function angle(time){
var a = time.split(':');
if(a[0] === '12' && a[1] === '00'){
var b = a[1] * 6 === 0 ? a[1] * 6 :Math.abs((a[0] > 12 ? a[0] - 12 : a[0] )* 30 + 0.5 * a[1] - a[1] * 6)
}else{
if(a[0] === '12' && Number(a[1]) > 30){
var b = Math.round(Math.abs(a[0]> 12 ? a[0] - 12 : a[0] * 30 + 0.5 * a[1] - a[1] * 6) )
}else{
var b = Math.abs(Math.abs((a[0] >= 12 ? a[0] - 12 : a[0]) * 30 + 0.5 * Number(a[1])) - Math.abs(a[1] * 6))
if(b>180){
b = Math.round(360-b)
}
else{
b=Math.round(b)
}
}
}
return b
}